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&grs&sor.

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

blogbench: Readfio: Seq Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSdbench: 1sqlite: Default Test Directoryfs-mark: 1000 Files, 1MB Sizefs-mark: 4000 Files, 32 Sub Dirs, 1MB Sizepgbench: On-Disk - Normal Load - Read Writefio: Rand Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfio: Rand Write - Libaio - No - Yes - 4KB - Default Test Directory - IOPSfs-mark: 5000 Files, 1MB Size, 4 Threadsfio: Seq Read - Libaio - No - Yes - 4KB - Default Test Directory - IOPSredis: GETblogbench: WriteLinux 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 F2FS17323806430577.04151.83139.57141.632226.5727016174797281.032643442854247.29944917468526373878.96150.74142.00141.872217.0722006969935280.272535883151309.00926318087486364482.79126.04140.40142.402227.8124285773246279.872636073132359.42866417215686391083.05132.58142.33141.932227.4119262573396280.672703472782214.83914155550623311084.4966.51144.70142.273571.0525974781099310.702846233102801.061842257393423178885.1065.64144.40141.833597.3319416081090303.332839802834325.501801058904123307984.7265.53142.13142.603593.8019449781314303.972834963041782.381857555003123165684.9465.94142.23143.533713.8721552080946320.802839733148836.08164611207927233430188.0276.23259.63259.903150.0927562881734294.972854052945344.29105702202620233486187.4376.87262.73260.673472.0819406281520298.032835923102704.5838842236338233046187.2976.07268.20265.003106.4619453681663295.372853483128367.8339432295280233585187.1876.28267.23267.973187.5919427481407291.872847813027572.714173OpenBenchmarking.org

BlogBench

Test: Read

Linux 4.7Linux 4.6Linux 4.5Linux 4.4OpenBenchmarking.orgFinal Score, More Is BetterBlogBench 1.0Test: ReadF2FSBtrfsEXT4500K1000K1500K2000K2500KSE +/- 12704.41, N = 3SE +/- 20785.44, N = 3SE +/- 11102.40, N = 6SE +/- 21281.10, N = 3SE +/- 17391.57, N = 3SE +/- 15703.05, N = 6SE +/- 15341.86, N = 3SE +/- 16571.58, N = 3SE +/- 11922.94, N = 6SE +/- 33989.92, N = 3SE +/- 187835.89, N = 6SE +/- 18109.30, N = 6229528017215685500312236338180874858904122026201746852573934173238012079275555061. (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

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

Dbench

Client Count: 1

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

SQLite

Test Target: Default Test Directory

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

FS-Mark

Test: 1000 Files, 1MB Size

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

FS-Mark

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

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

PostgreSQL pgbench

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

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

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.6Linux 4.5Linux 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: IOPSF2FSBtrfsEXT460K120K180K240K300KSE +/- 179.27, N = 3SE +/- 382.19, N = 3SE +/- 84.41, N = 3SE +/- 27.20, N = 3SE +/- 60.01, N = 3SE +/- 44.60, N = 3SE +/- 6.69, N = 3SE +/- 31.42, N = 3SE +/- 69.91, N = 3SE +/- 65.08, N = 3SE +/- 109.86, N = 3SE +/- 16.17, N = 32756282701612597472428571945361944972200691941601940622155201942741926251. (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.6Linux 4.5Linux 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: IOPSF2FSEXT4Btrfs20K40K60K80K100KSE +/- 58.53, N = 3SE +/- 81.21, N = 3SE +/- 1164.93, N = 3SE +/- 81.30, N = 3SE +/- 85.99, N = 3SE +/- 1151.31, N = 4SE +/- 49.70, N = 3SE +/- 78.88, N = 3SE +/- 1159.30, N = 3SE +/- 95.69, N = 3SE +/- 58.46, N = 3SE +/- 474.84, N = 38173481099747978166381314732468152081090699358140780946733961. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

Linux 4.7Linux 4.4Linux 4.6Linux 4.5OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 5000 Files, 1MB Size, 4 ThreadsEXT4F2FSBtrfs70140210280350SE +/- 2.01, N = 3SE +/- 3.93, N = 3SE +/- 0.35, N = 3SE +/- 1.55, N = 3SE +/- 1.55, N = 3SE +/- 0.30, N = 3SE +/- 1.19, N = 3SE +/- 3.40, N = 3SE +/- 0.35, N = 3SE +/- 0.87, N = 3SE +/- 3.79, N = 3SE +/- 0.18, N = 3320.80291.87280.67310.70294.97281.03303.97295.37279.87303.33298.03280.271. (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

Linux 4.4Linux 4.6Linux 4.7Linux 4.5OpenBenchmarking.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: IOPSF2FSEXT4Btrfs60K120K180K240K300KSE +/- 56.72, N = 3SE +/- 27.79, N = 3SE +/- 3789.67, N = 3SE +/- 34.64, N = 3SE +/- 364.49, N = 3SE +/- 3140.86, N = 3SE +/- 73.04, N = 3SE +/- 43.50, N = 3SE +/- 1073.84, N = 3SE +/- 73.42, N = 3SE +/- 19.08, N = 3SE +/- 1349.38, N = 32854052846232643442853482834962636072847812839732703472839802835922535881. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

Redis

Test: GET

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

BlogBench

Test: Write

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


Phoronix Test Suite v10.8.5