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. Linux 4.4: Btrfs: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: 115GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.4.0-040400-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: btrfs, Screen Resolution: 1024x768 Linux 4.5: Btrfs: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.5.0-040500-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: btrfs, Screen Resolution: 1024x768 Linux 4.6: Btrfs: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.6.0-040600-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: btrfs, Screen Resolution: 1024x768 Linux 4.7: Btrfs: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.7.0-040700-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: btrfs, Screen Resolution: 1024x768 Linux 4.4: EXT4: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: 115GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.4.0-040400-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: ext4, Screen Resolution: 1024x768 Linux 4.5: EXT4: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.5.0-040500-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: ext4, Screen Resolution: 1024x768 Linux 4.6: EXT4: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.6.0-040600-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: ext4, Screen Resolution: 1024x768 Linux 4.7: EXT4: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.7.0-040700-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: ext4, Screen Resolution: 1024x768 Linux 4.4: F2FS: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: 115GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.4.0-040400-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: f2fs, Screen Resolution: 1024x768 Linux 4.5: F2FS: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.5.0-040500-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: f2fs, Screen Resolution: 1024x768 Linux 4.6: F2FS: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.6.0-040600-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: f2fs, Screen Resolution: 1024x768 Linux 4.7: F2FS: Processor: Intel Xeon E3-1280 v5 @ 4.00GHz (8 Cores), Motherboard: MSI C236A WORKSTATION (MS-7998) v1.0, Chipset: Intel Skylake, Memory: 16384MB, Disk: Samsung SSD 950 PRO 256GB, Graphics: LLVMpipe, Audio: Realtek ALC1150, Network: Intel Connection OS: Ubuntu 16.10, Kernel: 4.7.0-040700-generic (x86_64), Desktop: Unity 7.5.0, Display Server: X Server 1.18.4, Display Driver: nouveau 1.0.12, OpenGL: 3.3 Mesa 12.0.1 Gallium 0.4, Compiler: GCC 5.4.0 20160609, File-System: f2fs, Screen Resolution: 1024x768 FS-Mark 3.3 Test: 1000 Files, 1MB Size Files/s > Higher Is Better Linux 4.4: Btrfs . 139.57 |=========================== Linux 4.5: Btrfs . 142.00 |============================ Linux 4.6: Btrfs . 140.40 |=========================== Linux 4.7: Btrfs . 142.33 |============================ Linux 4.4: EXT4 .. 144.70 |============================ Linux 4.5: EXT4 .. 144.40 |============================ Linux 4.6: EXT4 .. 142.13 |============================ Linux 4.7: EXT4 .. 142.23 |============================ Linux 4.4: F2FS .. 259.63 |================================================== Linux 4.5: F2FS .. 262.73 |=================================================== Linux 4.6: F2FS .. 268.20 |==================================================== Linux 4.7: F2FS .. 267.23 |==================================================== FS-Mark 3.3 Test: 5000 Files, 1MB Size, 4 Threads Files/s > Higher Is Better Linux 4.4: Btrfs . 281.03 |============================================== Linux 4.5: Btrfs . 280.27 |============================================= Linux 4.6: Btrfs . 279.87 |============================================= Linux 4.7: Btrfs . 280.67 |============================================= Linux 4.4: EXT4 .. 310.70 |================================================== Linux 4.5: EXT4 .. 303.33 |================================================= Linux 4.6: EXT4 .. 303.97 |================================================= Linux 4.7: EXT4 .. 320.80 |==================================================== Linux 4.4: F2FS .. 294.97 |================================================ Linux 4.5: F2FS .. 298.03 |================================================ Linux 4.6: F2FS .. 295.37 |================================================ Linux 4.7: F2FS .. 291.87 |=============================================== FS-Mark 3.3 Test: 4000 Files, 32 Sub Dirs, 1MB Size Files/s > Higher Is Better Linux 4.4: Btrfs . 141.63 |=========================== Linux 4.5: Btrfs . 141.87 |============================ Linux 4.6: Btrfs . 142.40 |============================ Linux 4.7: Btrfs . 141.93 |============================ Linux 4.4: EXT4 .. 142.27 |============================ Linux 4.5: EXT4 .. 141.83 |============================ Linux 4.6: EXT4 .. 142.60 |============================ Linux 4.7: EXT4 .. 143.53 |============================ Linux 4.4: F2FS .. 259.90 |================================================== Linux 4.5: F2FS .. 260.67 |=================================================== Linux 4.6: F2FS .. 265.00 |=================================================== Linux 4.7: F2FS .. 267.97 |==================================================== BlogBench 1.0 Test: Read Final Score > Higher Is Better Linux 4.4: Btrfs . 1732380 |====================================== Linux 4.5: Btrfs . 1746852 |======================================= Linux 4.6: Btrfs . 1808748 |======================================== Linux 4.7: Btrfs . 1721568 |====================================== Linux 4.4: EXT4 .. 555506 |============ Linux 4.5: EXT4 .. 573934 |============= Linux 4.6: EXT4 .. 589041 |============= Linux 4.7: EXT4 .. 550031 |============ Linux 4.4: F2FS .. 1207927 |=========================== Linux 4.5: F2FS .. 2202620 |================================================= Linux 4.6: F2FS .. 2236338 |================================================== Linux 4.7: F2FS .. 2295280 |=================================================== BlogBench 1.0 Test: Write Final Score > Higher Is Better Linux 4.4: Btrfs . 9449 |=========================== Linux 4.5: Btrfs . 9263 |========================== Linux 4.6: Btrfs . 8664 |========================= Linux 4.7: Btrfs . 9141 |========================== Linux 4.4: EXT4 .. 18422 |===================================================== Linux 4.5: EXT4 .. 18010 |=================================================== Linux 4.6: EXT4 .. 18575 |===================================================== Linux 4.7: EXT4 .. 16461 |=============================================== Linux 4.4: F2FS .. 10570 |============================== Linux 4.5: F2FS .. 3884 |=========== Linux 4.6: F2FS .. 3943 |=========== Linux 4.7: F2FS .. 4173 |============ Flexible IO Tester 2.1.13 Type: Random Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS IOPS > Higher Is Better Linux 4.4: Btrfs . 270161 |=================================================== Linux 4.5: Btrfs . 220069 |========================================== Linux 4.6: Btrfs . 242857 |============================================== Linux 4.7: Btrfs . 192625 |==================================== Linux 4.4: EXT4 .. 259747 |================================================= Linux 4.5: EXT4 .. 194160 |===================================== Linux 4.6: EXT4 .. 194497 |===================================== Linux 4.7: EXT4 .. 215520 |========================================= Linux 4.4: F2FS .. 275628 |==================================================== Linux 4.5: F2FS .. 194062 |===================================== Linux 4.6: F2FS .. 194536 |===================================== Linux 4.7: F2FS .. 194274 |===================================== Flexible IO Tester 2.1.13 Type: Random Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS IOPS > Higher Is Better Linux 4.4: Btrfs . 74797 |================================================= Linux 4.5: Btrfs . 69935 |============================================= Linux 4.6: Btrfs . 73246 |=============================================== Linux 4.7: Btrfs . 73396 |================================================ Linux 4.4: EXT4 .. 81099 |===================================================== Linux 4.5: EXT4 .. 81090 |===================================================== Linux 4.6: EXT4 .. 81314 |===================================================== Linux 4.7: EXT4 .. 80946 |==================================================== Linux 4.4: F2FS .. 81734 |===================================================== Linux 4.5: F2FS .. 81520 |===================================================== Linux 4.6: F2FS .. 81663 |===================================================== Linux 4.7: F2FS .. 81407 |===================================================== Flexible IO Tester 2.1.13 Type: Sequential Read - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS IOPS > Higher Is Better Linux 4.4: Btrfs . 264344 |================================================ Linux 4.5: Btrfs . 253588 |============================================== Linux 4.6: Btrfs . 263607 |================================================ Linux 4.7: Btrfs . 270347 |================================================= Linux 4.4: EXT4 .. 284623 |==================================================== Linux 4.5: EXT4 .. 283980 |==================================================== Linux 4.6: EXT4 .. 283496 |==================================================== Linux 4.7: EXT4 .. 283973 |==================================================== Linux 4.4: F2FS .. 285405 |==================================================== Linux 4.5: F2FS .. 283592 |==================================================== Linux 4.6: F2FS .. 285348 |==================================================== Linux 4.7: F2FS .. 284781 |==================================================== Flexible IO Tester 2.1.13 Type: Sequential Write - IO Engine: Libaio - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory - Result: IOPS IOPS > Higher Is Better Linux 4.4: Btrfs . 64305 |============== Linux 4.5: Btrfs . 63738 |============== Linux 4.6: Btrfs . 63644 |============== Linux 4.7: Btrfs . 63910 |============== Linux 4.4: EXT4 .. 233110 |==================================================== Linux 4.5: EXT4 .. 231788 |==================================================== Linux 4.6: EXT4 .. 233079 |==================================================== Linux 4.7: EXT4 .. 231656 |==================================================== Linux 4.4: F2FS .. 233430 |==================================================== Linux 4.5: F2FS .. 233486 |==================================================== Linux 4.6: F2FS .. 233046 |==================================================== Linux 4.7: F2FS .. 233585 |==================================================== Dbench 4.0 Client Count: 1 MB/s > Higher Is Better Linux 4.4: Btrfs . 77.04 |===================== Linux 4.5: Btrfs . 78.96 |====================== Linux 4.6: Btrfs . 82.79 |======================= Linux 4.7: Btrfs . 83.05 |======================= Linux 4.4: EXT4 .. 84.49 |======================= Linux 4.5: EXT4 .. 85.10 |======================== Linux 4.6: EXT4 .. 84.72 |======================= Linux 4.7: EXT4 .. 84.94 |======================= Linux 4.4: F2FS .. 188.02 |==================================================== Linux 4.5: F2FS .. 187.43 |==================================================== Linux 4.6: F2FS .. 187.29 |==================================================== Linux 4.7: F2FS .. 187.18 |==================================================== Redis 3.0.1 Test: GET Requests Per Second > Higher Is Better Linux 4.4: Btrfs . 2854247.29 |=========================================== Linux 4.5: Btrfs . 3151309.00 |================================================ Linux 4.6: Btrfs . 3132359.42 |================================================ Linux 4.7: Btrfs . 2782214.83 |========================================== Linux 4.4: EXT4 .. 3102801.06 |=============================================== Linux 4.5: EXT4 .. 2834325.50 |=========================================== Linux 4.6: EXT4 .. 3041782.38 |============================================== Linux 4.7: EXT4 .. 3148836.08 |================================================ Linux 4.4: F2FS .. 2945344.29 |============================================= Linux 4.5: F2FS .. 3102704.58 |=============================================== Linux 4.6: F2FS .. 3128367.83 |================================================ Linux 4.7: F2FS .. 3027572.71 |============================================== PostgreSQL pgbench 9.4.3 Scaling: On-Disk - Test: Normal Load - Mode: Read Write TPS > Higher Is Better Linux 4.4: Btrfs . 2226.57 |=============================== Linux 4.5: Btrfs . 2217.07 |============================== Linux 4.6: Btrfs . 2227.81 |=============================== Linux 4.7: Btrfs . 2227.41 |=============================== Linux 4.4: EXT4 .. 3571.05 |================================================= Linux 4.5: EXT4 .. 3597.33 |================================================= Linux 4.6: EXT4 .. 3593.80 |================================================= Linux 4.7: EXT4 .. 3713.87 |=================================================== Linux 4.4: F2FS .. 3150.09 |=========================================== Linux 4.5: F2FS .. 3472.08 |================================================ Linux 4.6: F2FS .. 3106.46 |=========================================== Linux 4.7: F2FS .. 3187.59 |============================================ SQLite 3.8.10.2 Test Target: Default Test Directory Seconds < Lower Is Better Linux 4.4: Btrfs . 151.83 |==================================================== Linux 4.5: Btrfs . 150.74 |==================================================== Linux 4.6: Btrfs . 126.04 |=========================================== Linux 4.7: Btrfs . 132.58 |============================================= Linux 4.4: EXT4 .. 66.51 |======================= Linux 4.5: EXT4 .. 65.64 |====================== Linux 4.6: EXT4 .. 65.53 |====================== Linux 4.7: EXT4 .. 65.94 |======================= Linux 4.4: F2FS .. 76.23 |========================== Linux 4.5: F2FS .. 76.87 |========================== Linux 4.6: F2FS .. 76.07 |========================== Linux 4.7: F2FS .. 76.28 |==========================