Markus Gothe on Linux NTFS performance and his attempt to add full kernel-mode write support.


In the embedded industry as well as device management you are left two options today when it comes to full kernel-mode write support for NTFS. Either you go with Tuxera or you go with Paragon software.

Both companies offers an OS X version of their driver as well. The latter one offers their x86 kernel module free for personal use and distributed as a binary.

Personally I have nothing to say about this. The FUSE-based userspace filesystem driver called NTFS-3G (provided by Tuxera) as you might have read about already is good for every day use when you do not depend on using Windows.

However for embedded applications the context switching adds up a noticeable CPU usage and appears to be "slow" for the end-users. Let it be a Set-Top Box, a NAS-controller or your camera.

Synology have solved this partly by adding a write cache to the NTFS-3G driver as of 2012.1.15 (you can read their great blog ariicle here:, I've been diffing this from the code released by Tuxera and came up with this patch.

Apple made an OS X driver, with full write support, based on NTFS-3G for which the source code in compliance with GPL is released here.

As of 2016-02-04 I found this link which describes how to make FUSE cache up to 128 kilobytes instead of normal 32 kilobytes (and hence reducing context switching):
mount -o noatime,async,big_writes -t ntfs-3g /dev/sda /mnt/point
Please notice the 'big_writes' mount option above. We also disable last access timestamping of files to gain performance.


Luckily it is about time that someone address this problem in a proper way; by adding support to create and resize files and directories to the existing Linux kernel module from which the NTFS-3G project forked in 2006.

My main approach is to find the smallest possible delta from the fork and when NTFS-3G gained full write support.

I'll keep you updated on my progress...

Edited 2016-02-04