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.

Compare your own system(s) to this result file with the Phoronix Test Suite by running the command: phoronix-test-suite benchmark 1608041-LO-LINUX44BT31
Jump To Table - Results

View

Do Not Show Noisy Results
Do Not Show Results With Incomplete Data
Do Not Show Results With Little Change/Spread
List Notable Results
Show Result Confidence Charts
Allow Limiting Results To Certain Suite(s)

Statistics

Show Overall Harmonic Mean(s)
Show Overall Geometric Mean
Show Wins / Losses Counts (Pie Chart)
Normalize Results
Remove Outliers Before Calculating Averages

Graph Settings

Force Line Graphs Where Applicable
Convert To Scalar Where Applicable
Prefer Vertical Bar Graphs
On Line Graphs With Missing Data, Connect The Line Gaps

Multi-Way Comparison

Condense Comparison
Transpose Comparison

Table

Show Detailed System Result Table

Run Management

Highlight
Result
Toggle/Hide
Result
Result
Identifier
View Logs
Performance Per
Dollar
Date
Run
  Test
  Duration
Linux 4.4: Btrfs
August 01 2016
 
Linux 4.5: Btrfs
August 01 2016
 
Linux 4.6: Btrfs
August 02 2016
 
Linux 4.7: Btrfs
August 02 2016
 
Linux 4.4: EXT4
August 02 2016
 
Linux 4.5: EXT4
August 02 2016
 
Linux 4.6: EXT4
August 02 2016
 
Linux 4.7: EXT4
August 03 2016
 
Linux 4.4: F2FS
August 03 2016
 
Linux 4.5: F2FS
August 03 2016
 
Linux 4.6: F2FS
August 03 2016
 
Linux 4.7: F2FS
August 03 2016
 
Invert Behavior (Only Show Selected Data)
 

Only show results where is faster than
Only show results matching title/arguments (delimit multiple options with a comma):
Do not show results matching title/arguments (delimit multiple options with a comma):


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

fs-mark: 1000 Files, 1MB Sizefs-mark: 5000 Files, 1MB Size, 4 Threadsfs-mark: 4000 Files, 32 Sub Dirs, 1MB Sizeblogbench: Readblogbench: Writefio: 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 - IOPSdbench: 1redis: GETpgbench: On-Disk - Normal Load - Read Writesqlite: Default Test DirectoryLinux 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 F2FS139.57281.03141.6317323809449270161747972643446430577.042854247.292226.57151.83142.00280.27141.8717468529263220069699352535886373878.963151309.002217.07150.74140.40279.87142.4018087488664242857732462636076364482.793132359.422227.81126.04142.33280.67141.9317215689141192625733962703476391083.052782214.832227.41132.58144.70310.70142.27555506184222597478109928462323311084.493102801.063571.0566.51144.40303.33141.83573934180101941608109028398023178885.102834325.503597.3365.64142.13303.97142.60589041185751944978131428349623307984.723041782.383593.8065.53142.23320.80143.53550031164612155208094628397323165684.943148836.083713.8765.94259.63294.97259.9012079271057027562881734285405233430188.022945344.293150.0976.23262.73298.03260.672202620388419406281520283592233486187.433102704.583472.0876.87268.20295.37265.002236338394319453681663285348233046187.293128367.833106.4676.07267.23291.87267.972295280417319427481407284781233585187.183027572.713187.5976.28OpenBenchmarking.org

FS-Mark

FS_Mark is designed to test a system's file-system performance. Learn more via the OpenBenchmarking.org test page.

Linux 4.4Linux 4.6Linux 4.5Linux 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 +/- 0.75, N = 3SE +/- 0.32, N = 3SE +/- 0.64, N = 3SE +/- 1.02, N = 3SE +/- 0.32, N = 3SE +/- 0.55, N = 3SE +/- 0.38, N = 3SE +/- 0.18, N = 3SE +/- 0.58, N = 3139.57144.70259.63140.40142.13268.20142.00144.40262.73142.23142.33267.231. (CC) gcc options: -static

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

Linux 4.4Linux 4.5Linux 4.7Linux 4.6OpenBenchmarking.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.38, N = 3SE +/- 0.24, N = 3SE +/- 0.44, N = 3SE +/- 0.18, N = 3SE +/- 0.58, N = 3SE +/- 0.24, N = 3SE +/- 0.20, N = 3SE +/- 0.53, N = 3SE +/- 0.40, N = 3141.63142.27259.90141.83141.87260.67141.93143.53267.97142.40142.60265.001. (CC) gcc options: -static

BlogBench

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

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

Flexible IO Tester

Linux 4.7Linux 4.5Linux 4.6Linux 4.4OpenBenchmarking.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: IOPSBtrfsF2FSEXT460K120K180K240K300KSE +/- 16.17, N = 3SE +/- 109.86, N = 3SE +/- 65.08, N = 3SE +/- 69.91, N = 3SE +/- 31.42, N = 3SE +/- 6.69, N = 3SE +/- 44.60, N = 3SE +/- 60.01, N = 3SE +/- 27.20, N = 3SE +/- 84.41, N = 3SE +/- 382.19, N = 3SE +/- 179.27, N = 31926251942742155201940621941602200691944971945362428572597472701612756281. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

Linux 4.5Linux 4.6Linux 4.7Linux 4.4OpenBenchmarking.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 +/- 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 = 3SE +/- 1164.93, N = 3SE +/- 81.21, N = 3SE +/- 58.53, N = 36993581090815207324681314816637339680946814077479781099817341. (CC) gcc options: -rdynamic -std=gnu99 -O3 -ffast-math -include -lrt -laio -lm -lpthread -ldl

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

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

Dbench

Dbench is a benchmark designed by the Samba project as a free alternative to netbench, but dbench contains only file-system calls for testing the disk performance. Learn more via the OpenBenchmarking.org test page.

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

Redis

Redis is an open-source data structure server. Learn more via the OpenBenchmarking.org test page.

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

PostgreSQL pgbench

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

SQLite

This is a simple benchmark of SQLite. At present this test profile just measures the time to perform a pre-defined number of insertions on an indexed database. Learn more via the OpenBenchmarking.org test page.

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