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&grw.

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. NTFSdbench: 1fio: Rand Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Rand Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Seq Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Seq Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfs-mark: 1000 Files, 1MB Sizefs-mark: 5000 Files, 1MB Size, 4 Threadsfs-mark: 4000 Files, 32 Sub Dirs, 1MB Sizeblogbench: Readblogbench: Writesqlite: Default Test Directorypgbench: On-Disk - Normal Load - Read WriteBtrfsEXT4F2FSXFSNTFS83.051926257339627034763910142.33280.67141.9317215689141132.582227.4184.9421552080946283973231656142.23320.80143.535500311646165.943713.87187.1819427481407284781233585267.23291.87267.972295280417376.283187.5990.3919416681350285041232590158.07284.07144.632188248620362.302788.4391.171375666313814076663680127.00119.13124.335160359347.45OpenBenchmarking.org

Dbench

Client Count: 1

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

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: IOPSBtrfsEXT4F2FSXFSNTFS50K100K150K200K250KSE +/- 16.17, N = 3SE +/- 65.08, N = 3SE +/- 109.86, N = 3SE +/- 17.90, N = 3SE +/- 781.27, N = 31926252155201942741941661375661. (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: IOPSBtrfsEXT4F2FSXFSNTFS20K40K60K80K100KSE +/- 474.84, N = 3SE +/- 58.46, N = 3SE +/- 95.69, N = 3SE +/- 26.86, N = 3SE +/- 831.96, N = 373396809468140781350631381. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

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: IOPSBtrfsEXT4F2FSXFSNTFS60K120K180K240K300KSE +/- 1073.84, N = 3SE +/- 43.50, N = 3SE +/- 73.04, N = 3SE +/- 51.39, N = 3SE +/- 329.89, N = 32703472839732847812850411407661. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

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: IOPSBtrfsEXT4F2FSXFSNTFS50K100K150K200K250KSE +/- 1006.05, N = 3SE +/- 49.24, N = 3SE +/- 112.34, N = 3SE +/- 91.25, N = 3SE +/- 707.35, N = 363910231656233585232590636801. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

FS-Mark

Test: 1000 Files, 1MB Size

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

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

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

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 SizeBtrfsEXT4F2FSXFSNTFS60120180240300SE +/- 0.18, N = 3SE +/- 0.58, N = 3SE +/- 0.24, N = 3SE +/- 4.01, N = 6SE +/- 0.92, N = 3141.93143.53267.97144.63124.331. (CC) gcc options: -static

BlogBench

Test: Read

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

BlogBench

Test: Write

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

SQLite

Test Target: Default Test Directory

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

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 WriteBtrfsEXT4F2FSXFS8001600240032004000SE +/- 5.08, N = 3SE +/- 26.02, N = 3SE +/- 9.54, N = 3SE +/- 494.50, N = 62227.413713.873187.592788.431. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm


Phoronix Test Suite v10.8.5