NTFS write speed really slow (<15MB/s) on Ubuntu
When copying large files or testing writespeed with dd
, the max writespeed I can get is about 12-15MB/s on drives using the NTFS filesystem. I tested multiple drives (all connected using SATA) which all got writespeeds of 100MB/s+ on Windows or when formatted with ext4, so it's not an alignment or drive issue.
top
shows high cpu usage for the mount.ntfs
process.
AMD dual core processor (2.2 GHz)
Kernel version: 3.5.0-23-generic
Ubuntu 12.04ntfs-3g
version: both 2012.1.15AR.1
(Ubuntu default version) and 2013.1.13AR.2
How can I fix the writespeed?
Solution 1:
A previous post was on the right track with the reference provided:
perhaps check here for ideas on what could be causing it. http://www.tuxera.com/community/ntfs-3g-faq/#slow
The original question mentions noticing the issue with large file transfers. In my experience with copying media files or doing backups, the key option in the above FAQ was:
Workaround: using the mount option “big_writes” generally reduces the CPU usage, provided the software requesting the writes supports big blocks.
Simply add the big_writes option, e.g.
sudo mount -o big_writes /dev/<device> /media/<mount_dir>
My Linux NAS with a low spec CPU now manages NTFS large file writes about three times faster. It improved from ~17MB/s to 50MB/s+. Even seen it peek at about 90MB/s in iotop which is probably near the external drives capability (a 2.5" USB3 HDD).
From the NTFS-3G man page:
big_writes
This option prevents fuse from splitting write buffers into 4K
chunks, enabling big write buffers to be transferred from the
application in a single step (up to some system limit, generally
128K bytes).
Closing notes:
- the big_writes option probably won't help a 4K random write benchmark ;-)
- While Tuxera seem to be reserving the pro NTFS driver for embeded system partners, Paragon offers an alternate free for personal useNTFS driver called NTFS&HFS for Linux 9.0 Express and a professional version. I don't however vouch for this product and when I tried a previous version (v8.5), I could not get it to work with my Linux Kernel version at the time.
Solution 2:
big_writes
was deprecated in 2016, the corresponding behavior is always enabled when using libfuse
version 3.0.0 or later. On a modern Linux system, poor NTFS performance usually means that:
- the disk is fragmented
- NTFS disk compression is enabled
- inadequate mount options such as
sync
are used
Solution 3:
perhaps check here for ideas on what could be causing it. http://www.tuxera.com/community/ntfs-3g-faq/#slow
This sounds a bit like the 'old days' when file io was not using DMA by default. It's unlikely these days but is BIOS using IDE emulation for SATA drives? Because if it is emulating IDE then it may also be emulating non-DMA mode as well.
Another potential slow down is if ntfs file compression. Is compression enabled on the folder you are writing to? If it is, that will make any new files in that folder compressed as well.