This document focuses on specific benchmark examples to highlight the performance benefits of the Tuxera NTFS file system driver on Linux embedded hardware platforms. It presents comparisons of several file systems: the default and native Linux ext4, Linux VFAT, NTFS-3G and Tuxera NTFS, Tuxera exFAT and Tuxera FAT. The results apply to any Linux installation including Android.
Unlike the over 30-year-old MS-DOS FAT, NTFS is a modern, 64-bit, high-performance file system which has scalability and performance built into it by design. For instance it uses B-Trees for directory indexing to achieve rapid, random file creation, removal and access, it has file extents to address continuous groups of blocks hereby eliminating disk seeks and CPU processing overheads, it compresses large metadata, furthermore it redundantly stores and utilizes vital information to optimize even more disk seeks away thus increasing read and write data streaming performance and reducing application I/O latency.
However the design of the file system is only one of the two most critical factors of the performance of the file system. The other one is the quality of the implementation. This is where Tuxera’s engineers excel. The open source NTFS-3G is a user space driver which significantly limits its performance capability. The Tuxera NTFS driver is a pure kernel driver with no user space components and this enables it to achieve the highest possible performance on Linux today by using fine-tuned kernel caching frameworks, direct access to hardware, eliminating expensive context switches, TLB flushes and paging activity.
If something still isn’t efficient then Tuxera NTFS uses advanced file system technologies like efficient caching, optional and speculative read-ahead, write-behind, optimal I/O scheduling, CPU specific assembly optimization, transparent large buffer support, workload specific heuristics, hardware acceleration and anything else which is needed to achieve the maximum performance Tuxera’s customers and partners expect. Tuxera’s developers are part of the Linux ecosystem for over a decade and work together with leading digital storage, chipset, software and Linux vendors to ensure the driver operates safely and efficiently.
Typically the performance bottleneck is a hardware component. Most often this is a bus interface, disk throughput or system memory bandwidth limitation. This is why the best ever performance is ”only” 8.2 GB/s. Of course this is much lower on most embedded and consumer electronic devices but the rule is the same: the speed limit is the hardware, or another device driver, or inefficiently coded software.
Tuxera NTFS has direct I/O, zero-copy and splice support which eliminates memory copies during data transfers if the two end-point devices, for instance a media encoder/decoder and network controller, support this. The performance limit is fundamentally the minimum value of what the two endpoints can support, or an intermediate hardware, or the memory subsystem.
The charts below compare the performance of the default ext4 Linux file system, open source VFAT, open source, user space NTFS-3G and Tuxera NTFS kernel driver as well as other Tuxera file systems. The benchmark results are presented for both SSD HDD and SD memory card on common embedded hardware.
Embedded hardware: Marvell 6192 800 MhZ, 512 MB RAM, ARM,120 GB Corsair Force GT SSD SATA 3.
Embedded hardware: Qualcomm Snapdragon S4 quad-core, ARM, 2 GB RAM, Sandisk UHS-1 64 GB SDXC.
In both embedded benchmarks Tuxera NTFS and other Tuxera file systems perform significantly faster than ext4 and open source VFAT. At the bottom end, NTFS-3G hit performance bottleneck when the driver’s CPU usage was always close to 100%. To compare, Tuxera NTFS driver’s CPU usage was around only 15-40% to achieve the much higher, maximum transfer rate using the specific hardware and bus interface.
It is worth mentioning the CPU utilization for ext4 was higher than Tuxeral NTFS, which indicates NTFS is more efficient and leaves more CPU for applications to run.