Linux 4.7 - EXT4 vs. F2FS vs. Btrfs vs. XFS vs. NTFS

Linux file-system benchmarks by Michael Larabel for a future article on Phoronix.

HTML result view exported from: https://openbenchmarking.org/result/1608041-LO-LINUX44BT99&sor&grs.

Linux 4.7 - EXT4 vs. F2FS vs. Btrfs vs. XFS vs. NTFSProcessorMotherboardChipsetMemoryDiskGraphicsAudioNetworkOSKernelDesktopDisplay ServerDisplay DriverOpenGLCompilerFile-SystemScreen ResolutionBtrfsEXT4F2FSXFSNTFSIntel Xeon E3-1280 v5 @ 4.00GHz (8 Cores)MSI C236A WORKSTATION (MS-7998) v1.0Intel Skylake16384MBSamsung SSD 950 PRO 256GBLLVMpipeRealtek ALC1150Intel ConnectionUbuntu 16.104.7.0-040700-generic (x86_64)Unity 7.5.0X Server 1.18.4nouveau 1.0.123.3 Mesa 12.0.1 Gallium 0.4GCC 5.4.0 20160609btrfs1024x768ext4f2fsxfsfuseblkOpenBenchmarking.orgEnvironment Details- LIBGL_ALWAYS_SOFTWARE=1Compiler Details- --build=x86_64-linux-gnu --disable-browser-plugin --disable-vtable-verify --disable-werror --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-gtk-cairo --enable-java-awt=gtk --enable-java-home --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --enable-libmpx --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-arch-directory=amd64 --with-default-libstdcxx-abi=new --with-multilib-list=m32,m64,mx32 --with-tune=generic -v Processor Details- Scaling Governor: intel_pstate performanceDisk Mount Options Details- Btrfs: relatime,rw,space_cache,ssd,subvol=/,subvolid=5- EXT4: data=ordered,relatime,rw- F2FS: acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr- XFS: attr2,inode64,noquota,relatime,rw- NTFS: allow_other,blksize=4096,group_id=0,relatime,rw,user_id=0

Linux 4.7 - EXT4 vs. F2FS vs. Btrfs vs. XFS vs. NTFSblogbench: Readfio: Seq Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSsqlite: Default Test Directoryfs-mark: 5000 Files, 1MB Size, 4 Threadsdbench: 1fs-mark: 1000 Files, 1MB Sizefio: Seq Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Rand Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Rand Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSpgbench: On-Disk - Normal Load - Read Writeblogbench: Writefs-mark: 4000 Files, 32 Sub Dirs, 1MB SizeBtrfsEXT4F2FSXFSNTFS172156863910132.58280.6783.05142.33270347192625733962227.419141141.9355003123165665.94320.8084.94142.23283973215520809463713.8716461143.53229528023358576.28291.87187.18267.23284781194274814073187.594173267.97218824823259062.30284.0790.39158.07285041194166813502788.436203144.63516036368047.45119.1391.17127.0014076613756663138593124.33OpenBenchmarking.org

BlogBench

Test: Read

OpenBenchmarking.orgFinal Score, More Is BetterBlogBench 1.0Test: ReadF2FSXFSBtrfsEXT4NTFS500K1000K1500K2000K2500KSE +/- 12704.41, N = 3SE +/- 10336.76, N = 3SE +/- 20785.44, N = 3SE +/- 11102.40, N = 6SE +/- 786.80, N = 4229528021882481721568550031516031. (CC) gcc options: -O2 -pthread

Flexible IO Tester

Type: Sequential Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 2.1.13Type: Sequential Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPSF2FSXFSEXT4BtrfsNTFS50K100K150K200K250KSE +/- 112.34, N = 3SE +/- 91.25, N = 3SE +/- 49.24, N = 3SE +/- 1006.05, N = 3SE +/- 707.35, N = 323358523259023165663910636801. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

SQLite

Test Target: Default Test Directory

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.8.10.2Test Target: Default Test DirectoryNTFSXFSEXT4F2FSBtrfs306090120150SE +/- 0.01, N = 3SE +/- 0.08, N = 3SE +/- 0.05, N = 3SE +/- 0.06, N = 3SE +/- 0.13, N = 347.4562.3065.9476.28132.581. (CC) gcc options: -O2 -ldl -lpthread

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 5000 Files, 1MB Size, 4 ThreadsEXT4F2FSXFSBtrfsNTFS70140210280350SE +/- 2.01, N = 3SE +/- 3.93, N = 3SE +/- 1.27, N = 3SE +/- 0.35, N = 3SE +/- 0.41, N = 3320.80291.87284.07280.67119.131. (CC) gcc options: -static

Dbench

Client Count: 1

OpenBenchmarking.orgMB/s, More Is BetterDbench 4.0Client Count: 1F2FSNTFSXFSEXT4Btrfs4080120160200SE +/- 3.57, N = 4SE +/- 0.19, N = 3SE +/- 0.15, N = 3SE +/- 0.07, N = 3SE +/- 0.30, N = 3187.1891.1790.3984.9483.051. (CC) gcc options: -lpopt -O2

FS-Mark

Test: 1000 Files, 1MB Size

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 1000 Files, 1MB SizeF2FSXFSBtrfsEXT4NTFS60120180240300SE +/- 0.58, N = 3SE +/- 0.90, N = 3SE +/- 0.18, N = 3SE +/- 0.38, N = 3SE +/- 0.70, N = 3267.23158.07142.33142.23127.001. (CC) gcc options: -static

Flexible IO Tester

Type: Sequential Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 2.1.13Type: Sequential Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPSXFSF2FSEXT4BtrfsNTFS60K120K180K240K300KSE +/- 51.39, N = 3SE +/- 73.04, N = 3SE +/- 43.50, N = 3SE +/- 1073.84, N = 3SE +/- 329.89, N = 32850412847812839732703471407661. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

Flexible IO Tester

Type: Random Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 2.1.13Type: Random Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPSEXT4F2FSXFSBtrfsNTFS50K100K150K200K250KSE +/- 65.08, N = 3SE +/- 109.86, N = 3SE +/- 17.90, N = 3SE +/- 16.17, N = 3SE +/- 781.27, N = 32155201942741941661926251375661. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

Flexible IO Tester

Type: Random Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 2.1.13Type: Random Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPSF2FSXFSEXT4BtrfsNTFS20K40K60K80K100KSE +/- 95.69, N = 3SE +/- 26.86, N = 3SE +/- 58.46, N = 3SE +/- 474.84, N = 3SE +/- 831.96, N = 381407813508094673396631381. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

PostgreSQL pgbench

Scaling: On-Disk - Test: Normal Load - Mode: Read Write

OpenBenchmarking.orgTPS, More Is BetterPostgreSQL pgbench 9.4.3Scaling: On-Disk - Test: Normal Load - Mode: Read WriteEXT4F2FSXFSBtrfs8001600240032004000SE +/- 26.02, N = 3SE +/- 9.54, N = 3SE +/- 494.50, N = 6SE +/- 5.08, N = 33713.873187.592788.432227.411. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm

BlogBench

Test: Write

OpenBenchmarking.orgFinal Score, More Is BetterBlogBench 1.0Test: WriteEXT4BtrfsXFSF2FSNTFS4K8K12K16K20KSE +/- 1662.76, N = 3SE +/- 135.08, N = 3SE +/- 10.39, N = 3SE +/- 36.04, N = 3SE +/- 14.38, N = 3164619141620341735931. (CC) gcc options: -O2 -pthread

FS-Mark

Test: 4000 Files, 32 Sub Dirs, 1MB Size

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 4000 Files, 32 Sub Dirs, 1MB SizeF2FSXFSEXT4BtrfsNTFS60120180240300SE +/- 0.24, N = 3SE +/- 4.01, N = 6SE +/- 0.58, N = 3SE +/- 0.18, N = 3SE +/- 0.92, N = 3267.97144.63143.53141.93124.331. (CC) gcc options: -static


Phoronix Test Suite v10.8.5