FS transaction performance comparison, cheapo Kingston 120GB SSD All filesystems were tested on the same partition with offset 1MiB and size 4GiB, mounted with noatime and discard, except tmpfs. The two btrfs tests additionally tries out autodefrag vs nodatacow, in an attempt to isolate the impact of copy-on-write. I really had hoped to run the sqlite benchmark too, but PTS said it «failed to produce a result». More overwhelming than these results, is a real sqlite workload I have that takes tens of minutes on a rotating hdd (and slows down the machine) or a split second on tmpfs.
HTML result view exported from: https://openbenchmarking.org/result/1603157-GA-1509207BE62 .
FS transaction performance comparison, cheapo Kingston 120GB SSD Processor Motherboard Chipset Memory Disk Graphics Audio Monitor Network OS Kernel Desktop Display Server Display Driver OpenGL File-System Screen Resolution Compiler tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk AMD A6-3670 APU @ 2.70GHz (4 Cores) ASUS F1A75-V PRO AMD Family 12h Root Complex 8192MB 120GB KINGSTON SV300S3 + 3001GB Western Digital WD30EFRX-68E + 128GB Crucial_CT128MX1 + 80GB Western Digital WD800BB-00FJ + 160GB Western Digital WD1600JB-00G AMD Radeon HD 6530D 512MB AMD BeaverCreek HDMI Audio COMPAQ 1825 Realtek RTL8111/8168/8411 openSUSE 20150909 4.1.6-3-desktop (x86_64) KDE Frameworks 5 X Server 1.17.2 radeon 7.5.0 3.3 Mesa 10.6.5 Gallium 0.4 tmpfs 1280x1024 f2fs xfs ext4 btrfs Intel Core i7 740Q @ 1.73GHz (8 Cores) ASUS K52JT v1.0 Intel Core DMI 500GB Western Digital WD5000BEVT-8 ASUS AMD Radeon HD 6370M/7370M 1024MB Conexant CX20585 JMicron JMC250 PCI Gigabit + Qualcomm Atheros AR9285 Wireless Arch rolling 4.4.5-1-zen (x86_64) GNOME Shell 3.18.4 3.3 Mesa 11.3.0-devel (git-7a2333e) Gallium 0.4 GCC 5.3.0 + Clang 3.9.0 (SVN 263445) + LLVM 3.9.0svn 1366x768 OpenBenchmarking.org Compiler Details - tmpfs, f2fs, xfs, ext4, btrfs autodefrag, btrfs nodatacow: --build=x86_64-suse-linux --disable-libgcj --disable-libssp --disable-libstdcxx-pch --disable-libvtv --disable-plugin --enable-__cxa_atexit --enable-checking=release --enable-languages=c,c++,objc,fortran,obj-c++,java,ada,go --enable-libmpx --enable-libstdcxx-allocator=new --enable-linux-futex --enable-multilib --enable-ssp --enable-version-specific-runtime-libs --host=x86_64-suse-linux --mandir=/usr/share/man --with-arch-32=i586 --with-slibdir=/lib64 --with-tune=generic --without-system-libunwind Processor Details - tmpfs: Scaling Governor: acpi-cpufreq ondemand - f2fs: Scaling Governor: acpi-cpufreq ondemand - xfs: Scaling Governor: acpi-cpufreq ondemand - ext4: Scaling Governor: acpi-cpufreq ondemand - btrfs autodefrag: Scaling Governor: acpi-cpufreq ondemand - btrfs nodatacow: Scaling Governor: acpi-cpufreq ondemand - kk: Scaling Governor: acpi-cpufreq performance System Details - tmpfs, f2fs, xfs, ext4, btrfs autodefrag, btrfs nodatacow: Disk Scheduler: DEADLINE. Disk Scheduler Details - tmpfs: DEADLINE Disk Details - f2fs: DEADLINE / acl,active_logs=6,background_gc=on,discard,inline_data,noatime,rw,user_xattr - xfs: DEADLINE / attr2,discard,inode64,noatime,noquota,rw - ext4: DEADLINE / data=ordered,discard,noatime,rw - btrfs autodefrag: DEADLINE / autodefrag,discard,noatime,rw,space_cache,ssd - btrfs nodatacow: DEADLINE / discard,noatime,nodatacow,nodatasum,rw,space_cache,ssd - kk: BFQ / autodefrag,compress-force=lzo,relatime,rw,space_cache,subvol=/,subvolid=5 Kernel Details - kk: libahci.ignore_sss=1
FS transaction performance comparison, cheapo Kingston 120GB SSD iozone: 4Kb - 512MB - Read Performance iozone: 4Kb - 512MB - Write Performance postmark: Disk Transaction Performance pgbench: On-Disk - Single Thread - Read Write tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk 3020.86 1860.07 3750 215.50 3098.21 343.61 2798 195.92 2941.04 285.54 2435 185.26 3060.14 337.85 2517 196.35 3138.02 362.02 444 167.38 2994.46 363.68 623 184.91 3293.86 179.08 2483 10.08 OpenBenchmarking.org
IOzone Record Size: 4Kb - File Size: 512MB - Disk Test: Read Performance OpenBenchmarking.org MB/s, More Is Better IOzone 3.405 Record Size: 4Kb - File Size: 512MB - Disk Test: Read Performance tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk 700 1400 2100 2800 3500 SE +/- 7.18, N = 3 SE +/- 25.67, N = 3 SE +/- 29.18, N = 3 SE +/- 24.45, N = 3 SE +/- 7.82, N = 3 SE +/- 8.67, N = 3 SE +/- 0.45, N = 3 3020.86 3098.21 2941.04 3060.14 3138.02 2994.46 3293.86 1. (CC) gcc options: -O3
IOzone Record Size: 4Kb - File Size: 512MB - Disk Test: Write Performance OpenBenchmarking.org MB/s, More Is Better IOzone 3.405 Record Size: 4Kb - File Size: 512MB - Disk Test: Write Performance tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk 400 800 1200 1600 2000 SE +/- 8.92, N = 3 SE +/- 0.45, N = 3 SE +/- 0.66, N = 3 SE +/- 0.71, N = 3 SE +/- 0.44, N = 3 SE +/- 0.25, N = 3 SE +/- 5.01, N = 6 1860.07 343.61 285.54 337.85 362.02 363.68 179.08 1. (CC) gcc options: -O3
PostMark Disk Transaction Performance OpenBenchmarking.org TPS, More Is Better PostMark 1.51 Disk Transaction Performance tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk 800 1600 2400 3200 4000 SE +/- 18.67, N = 3 SE +/- 10.33, N = 3 SE +/- 7.67, N = 3 SE +/- 22.30, N = 3 SE +/- 19.81, N = 6 SE +/- 110.92, N = 6 SE +/- 8.33, N = 3 3750 2798 2435 2517 444 623 2483 1. (CC) gcc options: -O3
PostgreSQL pgbench Scaling: On-Disk - Test: Single Thread - Mode: Read Write OpenBenchmarking.org TPS, More Is Better PostgreSQL pgbench 9.4.3 Scaling: On-Disk - Test: Single Thread - Mode: Read Write tmpfs f2fs xfs ext4 btrfs autodefrag btrfs nodatacow kk 50 100 150 200 250 SE +/- 0.10, N = 3 SE +/- 1.01, N = 3 SE +/- 1.66, N = 3 SE +/- 0.83, N = 3 SE +/- 0.69, N = 2 SE +/- 0.21, N = 3 SE +/- 0.02, N = 3 215.50 195.92 185.26 196.35 167.38 184.91 10.08 1. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -pthread -lpgcommon -lpgport -lpq -lpthread -lrt -lcrypt -ldl -lm
Phoronix Test Suite v10.8.4