Linux 4.4 To Linux 4.7 - EXT4 vs. F2FS vs. Btrfs

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

HTML result view exported from: https://openbenchmarking.org/result/1608041-LO-LINUX44BT31.

ProcessorMotherboardChipsetMemoryDiskGraphicsAudioNetworkOSKernelDesktopDisplay ServerDisplay DriverOpenGLCompilerFile-SystemScreen ResolutionLinux 4.4Linux 4.5Linux 4.6Linux 4.7Linux 4.4Linux 4.5Linux 4.6Linux 4.7Linux 4.4Linux 4.5Linux 4.6Linux 4.7 Btrfs Btrfs Btrfs Btrfs EXT4 EXT4 EXT4 EXT4 F2FS F2FS F2FS F2FSIntel Xeon E3-1280 v5 @ 4.00GHz (8 Cores)MSI C236A WORKSTATION (MS-7998) v1.0Intel Skylake16384MB115GBLLVMpipeRealtek ALC1150Intel ConnectionUbuntu 16.104.4.0-040400-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 20160609btrfs1024x768Samsung SSD 950 PRO 256GB4.5.0-040500-generic (x86_64)4.6.0-040600-generic (x86_64)4.7.0-040700-generic (x86_64)115GB4.4.0-040400-generic (x86_64)ext4Samsung SSD 950 PRO 256GB4.5.0-040500-generic (x86_64)4.6.0-040600-generic (x86_64)4.7.0-040700-generic (x86_64)115GB4.4.0-040400-generic (x86_64)f2fsSamsung SSD 950 PRO 256GB4.5.0-040500-generic (x86_64)4.6.0-040600-generic (x86_64)4.7.0-040700-generic (x86_64)OpenBenchmarking.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- Linux 4.4: Btrfs: relatime,rw,space_cache,ssd,subvol=/,subvolid=5- Linux 4.5: Btrfs: relatime,rw,space_cache,ssd,subvol=/,subvolid=5- Linux 4.6: Btrfs: relatime,rw,space_cache,ssd,subvol=/,subvolid=5- Linux 4.7: Btrfs: relatime,rw,space_cache,ssd,subvol=/,subvolid=5- Linux 4.4: EXT4: data=ordered,relatime,rw- Linux 4.5: EXT4: data=ordered,relatime,rw- Linux 4.6: EXT4: data=ordered,relatime,rw- Linux 4.7: EXT4: data=ordered,relatime,rw- Linux 4.4: F2FS: acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr- Linux 4.5: F2FS: acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr- Linux 4.6: F2FS: acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr- Linux 4.7: F2FS: acl,active_logs=6,background_gc=on,extent_cache,inline_data,relatime,rw,user_xattr

sqlite: Default Test Directoryfio: 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: Writedbench: 1pgbench: On-Disk - Normal Load - Read Writeredis: GETLinux 4.4Linux 4.5Linux 4.6Linux 4.7Linux 4.4Linux 4.5Linux 4.6Linux 4.7Linux 4.4Linux 4.5Linux 4.6Linux 4.7 Btrfs Btrfs Btrfs Btrfs EXT4 EXT4 EXT4 EXT4 F2FS F2FS F2FS F2FS151.832701617479726434464305139.57281.03141.631732380944977.042226.572854247.29150.742200696993525358863738142.00280.27141.871746852926378.962217.073151309.00126.042428577324626360763644140.40279.87142.401808748866482.792227.813132359.42132.581926257339627034763910142.33280.67141.931721568914183.052227.412782214.8366.5125974781099284623233110144.70310.70142.275555061842284.493571.053102801.0665.6419416081090283980231788144.40303.33141.835739341801085.103597.332834325.5065.5319449781314283496233079142.13303.97142.605890411857584.723593.803041782.3865.9421552080946283973231656142.23320.80143.535500311646184.943713.873148836.0876.2327562881734285405233430259.63294.97259.90120792710570188.023150.092945344.2976.8719406281520283592233486262.73298.03260.6722026203884187.433472.083102704.5876.0719453681663285348233046268.20295.37265.0022363383943187.293106.463128367.8376.2819427481407284781233585267.23291.87267.9722952804173187.183187.593027572.71OpenBenchmarking.org

SQLite

Test Target: Default Test Directory

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.8.10.2Test Target: Default Test DirectoryBtrfsEXT4F2FS306090120150SE +/- 0.08, N = 3SE +/- 0.03, N = 3SE +/- 0.03, N = 3SE +/- 0.07, N = 3SE +/- 0.01, N = 3SE +/- 0.11, N = 3SE +/- 2.64, N = 6SE +/- 0.06, N = 3SE +/- 0.12, N = 3SE +/- 0.13, N = 3SE +/- 0.05, N = 3SE +/- 0.06, N = 3151.8366.5176.23150.7465.6476.87126.0465.5376.07132.5865.9476.281. (CC) gcc options: -O2 -ldl -lpthread

Flexible IO Tester

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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.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: IOPSBtrfsEXT4F2FS60K120K180K240K300KSE +/- 382.19, N = 3SE +/- 84.41, N = 3SE +/- 179.27, N = 3SE +/- 6.69, N = 3SE +/- 31.42, N = 3SE +/- 69.91, N = 3SE +/- 27.20, N = 3SE +/- 44.60, N = 3SE +/- 60.01, N = 3SE +/- 16.17, N = 3SE +/- 65.08, N = 3SE +/- 109.86, N = 32701612597472756282200691941601940622428571944971945361926252155201942741. (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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.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: IOPSBtrfsEXT4F2FS20K40K60K80K100KSE +/- 1164.93, N = 3SE +/- 81.21, N = 3SE +/- 58.53, N = 3SE +/- 1159.30, N = 3SE +/- 78.88, N = 3SE +/- 49.70, N = 3SE +/- 1151.31, N = 4SE +/- 85.99, N = 3SE +/- 81.30, N = 3SE +/- 474.84, N = 3SE +/- 58.46, N = 3SE +/- 95.69, N = 37479781099817346993581090815207324681314816637339680946814071. (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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.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: IOPSBtrfsEXT4F2FS60K120K180K240K300KSE +/- 3789.67, N = 3SE +/- 27.79, N = 3SE +/- 56.72, N = 3SE +/- 1349.38, N = 3SE +/- 73.42, N = 3SE +/- 19.08, N = 3SE +/- 3140.86, N = 3SE +/- 364.49, N = 3SE +/- 34.64, N = 3SE +/- 1073.84, N = 3SE +/- 43.50, N = 3SE +/- 73.04, N = 32643442846232854052535882839802835922636072834962853482703472839732847811. (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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.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: IOPSBtrfsEXT4F2FS50K100K150K200K250KSE +/- 1126.01, N = 3SE +/- 120.01, N = 3SE +/- 145.24, N = 3SE +/- 1185.59, N = 3SE +/- 210.42, N = 3SE +/- 44.54, N = 3SE +/- 555.15, N = 3SE +/- 110.96, N = 3SE +/- 73.87, N = 3SE +/- 1006.05, N = 3SE +/- 49.24, N = 3SE +/- 112.34, N = 3643052331102334306373823178823348663644233079233046639102316562335851. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

FS-Mark

Test: 1000 Files, 1MB Size

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 1000 Files, 1MB SizeBtrfsEXT4F2FS60120180240300SE +/- 1.04, N = 3SE +/- 1.48, N = 3SE +/- 0.55, N = 3SE +/- 1.02, N = 3SE +/- 0.32, N = 3SE +/- 0.55, N = 3SE +/- 0.75, N = 3SE +/- 0.32, N = 3SE +/- 0.64, N = 3SE +/- 0.18, N = 3SE +/- 0.38, N = 3SE +/- 0.58, N = 3139.57144.70259.63142.00144.40262.73140.40142.13268.20142.33142.23267.231. (CC) gcc options: -static

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 5000 Files, 1MB Size, 4 ThreadsBtrfsEXT4F2FS70140210280350SE +/- 0.30, N = 3SE +/- 1.55, N = 3SE +/- 1.55, N = 3SE +/- 0.18, N = 3SE +/- 0.87, N = 3SE +/- 3.79, N = 3SE +/- 0.35, N = 3SE +/- 1.19, N = 3SE +/- 3.40, N = 3SE +/- 0.35, N = 3SE +/- 2.01, N = 3SE +/- 3.93, N = 3281.03310.70294.97280.27303.33298.03279.87303.97295.37280.67320.80291.871. (CC) gcc options: -static

FS-Mark

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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 4000 Files, 32 Sub Dirs, 1MB SizeBtrfsEXT4F2FS60120180240300SE +/- 0.19, N = 3SE +/- 0.13, N = 3SE +/- 0.66, N = 3SE +/- 0.24, N = 3SE +/- 0.38, N = 3SE +/- 0.44, N = 3SE +/- 0.20, N = 3SE +/- 0.53, N = 3SE +/- 0.40, N = 3SE +/- 0.18, N = 3SE +/- 0.58, N = 3SE +/- 0.24, N = 3141.63142.27259.90141.87141.83260.67142.40142.60265.00141.93143.53267.971. (CC) gcc options: -static

BlogBench

Test: Read

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgFinal Score, More Is BetterBlogBench 1.0Test: ReadBtrfsEXT4F2FS500K1000K1500K2000K2500KSE +/- 33989.92, N = 3SE +/- 18109.30, N = 6SE +/- 187835.89, N = 6SE +/- 16571.58, N = 3SE +/- 11922.94, N = 6SE +/- 15341.86, N = 3SE +/- 17391.57, N = 3SE +/- 15703.05, N = 6SE +/- 21281.10, N = 3SE +/- 20785.44, N = 3SE +/- 11102.40, N = 6SE +/- 12704.41, N = 3173238055550612079271746852573934220262018087485890412236338172156855003122952801. (CC) gcc options: -O2 -pthread

BlogBench

Test: Write

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgFinal Score, More Is BetterBlogBench 1.0Test: WriteBtrfsEXT4F2FS4K8K12K16K20KSE +/- 110.00, N = 3SE +/- 1314.03, N = 3SE +/- 2319.75, N = 3SE +/- 66.19, N = 3SE +/- 1495.01, N = 3SE +/- 80.01, N = 3SE +/- 57.17, N = 3SE +/- 1693.08, N = 3SE +/- 108.00, N = 3SE +/- 135.08, N = 3SE +/- 1662.76, N = 3SE +/- 36.04, N = 3944918422105709263180103884866418575394391411646141731. (CC) gcc options: -O2 -pthread

Dbench

Client Count: 1

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgMB/s, More Is BetterDbench 4.0Client Count: 1BtrfsEXT4F2FS4080120160200SE +/- 0.04, N = 3SE +/- 0.07, N = 3SE +/- 2.79, N = 6SE +/- 0.04, N = 3SE +/- 0.02, N = 3SE +/- 2.74, N = 5SE +/- 0.10, N = 3SE +/- 0.04, N = 3SE +/- 2.86, N = 5SE +/- 0.30, N = 3SE +/- 0.07, N = 3SE +/- 3.57, N = 477.0484.49188.0278.9685.10187.4382.7984.72187.2983.0584.94187.181. (CC) gcc options: -lpopt -O2

PostgreSQL pgbench

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

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgTPS, More Is BetterPostgreSQL pgbench 9.4.3Scaling: On-Disk - Test: Normal Load - Mode: Read WriteBtrfsEXT4F2FS8001600240032004000SE +/- 8.51, N = 3SE +/- 31.20, N = 3SE +/- 2.80, N = 3SE +/- 2.04, N = 3SE +/- 28.13, N = 3SE +/- 19.52, N = 3SE +/- 4.97, N = 3SE +/- 26.17, N = 3SE +/- 18.68, N = 3SE +/- 5.08, N = 3SE +/- 26.02, N = 3SE +/- 9.54, N = 32226.573571.053150.092217.073597.333472.082227.813593.803106.462227.413713.873187.591. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm

Redis

Test: GET

Linux 4.4Linux 4.5Linux 4.6Linux 4.7OpenBenchmarking.orgRequests Per Second, More Is BetterRedis 3.0.1Test: GETBtrfsEXT4F2FS700K1400K2100K2800K3500KSE +/- 110138.79, N = 6SE +/- 46011.71, N = 4SE +/- 108968.99, N = 6SE +/- 8744.85, N = 3SE +/- 143824.61, N = 6SE +/- 22529.67, N = 3SE +/- 36384.42, N = 3SE +/- 47595.92, N = 4SE +/- 13103.08, N = 3SE +/- 154397.91, N = 6SE +/- 37301.93, N = 3SE +/- 113714.90, N = 62854247.293102801.062945344.293151309.002834325.503102704.583132359.423041782.383128367.832782214.833148836.083027572.711. (CC) gcc options: -ggdb -rdynamic -lm -pthread -ldl -std=gnu99 -pipe -g3 -O3 -funroll-loops


Phoronix Test Suite v10.8.4