Bcachefs File-System Benchmarks

Bcachefs file-system benchmarks by Michael Larabel for a future article.

Compare your own system(s) to this result file with the Phoronix Test Suite by running the command: phoronix-test-suite benchmark 2311274-NE-SSDSTORAG18
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

Multi-Way Comparison

Condense Multi-Option Tests Into Single Result Graphs

Table

Show Detailed System Result Table

Run Management

Highlight
Result
Toggle/Hide
Result
Result
Identifier
Performance Per
Dollar
Date
Run
  Test
  Duration
Bcachefs
November 26 2023
  4 Hours, 36 Minutes
Btrfs
November 26 2023
  2 Hours, 38 Minutes
EXT4
November 26 2023
  3 Hours, 47 Minutes
XFS
November 27 2023
  2 Hours, 12 Minutes
F2FS
November 27 2023
  2 Hours, 49 Minutes
Invert Behavior (Only Show Selected Data)
  3 Hours, 12 Minutes

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):


Bcachefs File-System BenchmarksOpenBenchmarking.orgPhoronix Test SuiteAMD Ryzen Threadripper 7980X 64-Cores @ 8.21GHz (64 Cores / 128 Threads)ASUS Pro WS TRX50-SAGE WIFI (0217 BIOS)AMD Device 14a4128GB2000GB Corsair MP700 PRO + 1000GB Western Digital WDS100T1X0E-00AFY0AMD Radeon RX 7900 XT 20GB (2025/1249MHz)Realtek ALC1220DELL U2723QEAquantia Device 04c0 + Intel I226-LM + MEDIATEK MT7922 802.11ax PCIUbuntu 23.106.7.0-060700rc2daily20231126-generic (x86_64)GNOME Shell 45.0X Server 1.21.1.7 + Wayland4.6 Mesa 23.2.1-1ubuntu3 (LLVM 15.0.7 DRM 3.56)GCC 13.2.0BcacheFSbtrfsext4xfsf2fs3840x2160ProcessorMotherboardChipsetMemoryDiskGraphicsAudioMonitorNetworkOSKernelDesktopDisplay ServerOpenGLCompilerFile-SystemsScreen ResolutionBcachefs File-System Benchmarks PerformanceSystem Logs- Transparent Huge Pages: madvise- --build=x86_64-linux-gnu --disable-vtable-verify --disable-werror --enable-bootstrap --enable-cet --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --enable-libphobos-checking=release --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-link-serialization=2 --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc=auto --enable-offload-defaulted --enable-offload-targets=nvptx-none=/build/gcc-13-XYspKM/gcc-13-13.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-XYspKM/gcc-13-13.2.0/debian/tmp-gcn/usr --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --program-prefix=x86_64-linux-gnu- --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-build-config=bootstrap-lto-lean --with-default-libstdcxx-abi=new --with-gcc-major-version-only --with-multilib-list=m32,m64,mx32 --with-target-system-zlib=auto --with-tune=generic --without-cuda-driver -v - Bcachefs: NONE / fix_errors=yes,nojournal_transaction_names,relatime,rw / Block Size: 512- Btrfs: NONE / discard=async,relatime,rw,space_cache=v2,ssd,subvol=/,subvolid=5 / Block Size: 4096- EXT4: NONE / relatime,rw / Block Size: 4096- XFS: NONE / attr2,inode64,logbsize=32k,logbufs=8,noquota,relatime,rw / Block Size: 4096- F2FS: NONE / acl,active_logs=6,alloc_mode=default,background_gc=on,barrier,checkpoint_merge,discard,discard_unit=block,errors=continue,extent_cache,flush_merge,fsync_mode=posix,inline_data,inline_dentry,inline_xattr,lazytime,memory=normal,mode=adaptive,no_heap,nogc_merge,relatime,rw,user_xattr / Block Size: 4096 - Scaling Governor: amd-pstate-epp powersave (EPP: balance_performance) - CPU Microcode: 0xa108105- gather_data_sampling: Not affected + itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + mmio_stale_data: Not affected + retbleed: Not affected + spec_rstack_overflow: Mitigation of Safe RET + spec_store_bypass: Mitigation of SSB disabled via prctl + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Enhanced / Automatic IBRS IBPB: conditional STIBP: always-on RSB filling PBRSB-eIBRS: Not affected + srbds: Not affected + tsx_async_abort: Not affected

BcachefsBtrfsEXT4XFSF2FSLogarithmic Result OverviewPhoronix Test SuitePostgreSQLFlexible IO TesterDbenchCockroachDBSQLite

Bcachefs File-System Benchmarksdbench: 12pgbench: 1000 - 1000 - Read Write - Average Latencypgbench: 1000 - 1000 - Read Writefio: Seq Write - IO_uring - No - Yes - 2MB - 1 - Default Test Directorycockroach: KV, 50% Reads - 128fio: Rand Write - IO_uring - No - Yes - 4KB - 1 - Default Test Directorysqlite: 16fio: Seq Read - IO_uring - No - Yes - 2MB - 32 - Default Test Directorysqlite: 8fio: Rand Read - IO_uring - No - Yes - 4KB - 32 - Default Test Directoryfio: Seq Read - IO_uring - No - Yes - 2MB - 1 - Default Test Directorysqlite: 2sqlite: 4BcachefsBtrfsEXT4XFSF2FS747.406157.70165581779.4148184.1682066.87310111.7357.21415811010331.1651.59352.8121582.9433.040302874929.7845262.37521178.22410720.0973.37949256611396.0269.93171.1991611.9931.020327011631.1970152.8221819150.24110798.6595.298157367711448.2144.14966.356808.24419.9765138111010.6970505.5223247154.65010883.3187.274156572011483.7534.05952.8352039.7936.5352748810995.6484252.6221728104.87510432.6984.342156876711387.5041.21757.772OpenBenchmarking.org

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.

OpenBenchmarking.orgMB/s, More Is BetterDbench 4.0Client Count: 12BcachefsXFSBtrfsEXT4F2FS400800120016002000SE +/- 16.80, N = 9SE +/- 0.63, N = 3SE +/- 9.48, N = 3SE +/- 18.01, N = 9SE +/- 1.03, N = 3747.41808.241582.941611.992039.791. (CC) gcc options: -lpopt -O2

PostgreSQL

This is a benchmark of PostgreSQL using the integrated pgbench for facilitating the database benchmarks. Learn more via the OpenBenchmarking.org test page.

OpenBenchmarking.orgms, Fewer Is BetterPostgreSQL 16Scaling Factor: 1000 - Clients: 1000 - Mode: Read Write - Average LatencyBcachefsF2FSBtrfsEXT4XFS306090120150SE +/- 7.94, N = 12SE +/- 0.68, N = 12SE +/- 0.26, N = 12SE +/- 1.27, N = 9SE +/- 1.06, N = 9157.7036.5433.0431.0219.981. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -lpgcommon -lpgport -lpq -lm

OpenBenchmarking.orgTPS, More Is BetterPostgreSQL 16Scaling Factor: 1000 - Clients: 1000 - Mode: Read WriteBcachefsF2FSBtrfsEXT4XFS11K22K33K44K55KSE +/- 393.97, N = 12SE +/- 570.95, N = 12SE +/- 231.44, N = 12SE +/- 1417.85, N = 9SE +/- 3124.70, N = 96558274883028732701513811. (CC) gcc options: -fno-strict-aliasing -fwrapv -O2 -lpgcommon -lpgport -lpq -lm

Flexible IO Tester

OpenBenchmarking.orgMiB/s, More Is BetterFlexible IO Tester 3.35Type: Sequential Write - Engine: IO_uring - Buffered: No - Direct: Yes - Block Size: 2MB - Job Count: 1 - Disk Target: Default Test DirectoryEXT4BcachefsBtrfsF2FSXFS2K4K6K8K10KSE +/- 60.81, N = 3SE +/- 100.08, N = 15SE +/- 44.22, N = 3SE +/- 3.58, N = 3SE +/- 5.97, N = 31631.191779.414929.7810995.6411010.69MIN: 1043.13 / MAX: 925220.58MIN: 1385.17 / MAX: 3033.5MIN: 4841.36 / MAX: 4975.3MIN: 10989.72 / MAX: 11002.08MIN: 10999 / MAX: 11018.621. (CC) gcc options: -rdynamic -ltcmalloc -ll -lnuma -lz -lm -laio -lpthread -ldl -lcurl -lssl -lcrypto -std=gnu99 -ffast-math -include -O3 -fcommon -march=native

CockroachDB

CockroachDB is a cloud-native, distributed SQL database for data intensive applications. This test profile uses a server-less CockroachDB configuration to test various Coackroach workloads on the local host with a single node. Learn more via the OpenBenchmarking.org test page.

OpenBenchmarking.orgops/s, More Is BetterCockroachDB 22.2Workload: KV, 50% Reads - Concurrency: 128BtrfsBcachefsEXT4XFSF2FS20K40K60K80K100KSE +/- 198.41, N = 3SE +/- 2640.04, N = 12SE +/- 267.13, N = 3SE +/- 177.77, N = 3SE +/- 173.63, N = 345262.348184.170152.870505.584252.6

Flexible IO Tester

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 3.35Type: Random Write - Engine: IO_uring - Buffered: No - Direct: Yes - Block Size: 4KB - Job Count: 1 - Disk Target: Default Test DirectoryBcachefsBtrfsF2FSEXT4XFS50K100K150K200K250KSE +/- 66.80, N = 15SE +/- 220.39, N = 3SE +/- 2479.24, N = 3SE +/- 934.79, N = 3SE +/- 1470.61, N = 3682075211221728221819223247MIN: 74826.59 / MAX: 75589.96MIN: 217209.02 / MAX: 225754.9MIN: 220427.04 / MAX: 223595.96MIN: 221503.62 / MAX: 226169.771. (CC) gcc options: -rdynamic -ltcmalloc -ll -lnuma -lz -lm -laio -lpthread -ldl -lcurl -lssl -lcrypto -std=gnu99 -ffast-math -include -O3 -fcommon -march=native

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 with a variable number of concurrent repetitions -- up to the maximum number of CPU threads available. Learn more via the OpenBenchmarking.org test page.

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.41.2Threads / Copies: 16XFSEXT4F2FSBtrfsBcachefs306090120150SE +/- 0.38, N = 3SE +/- 0.30, N = 3SE +/- 1.37, N = 3SE +/- 0.89, N = 4SE +/- 0.12, N = 3154.65150.24104.8878.2266.871. (CC) gcc options: -O2 -lreadline -ltermcap -lz -lm

Flexible IO Tester

OpenBenchmarking.orgMiB/s, More Is BetterFlexible IO Tester 3.35Type: Sequential Read - Engine: IO_uring - Buffered: No - Direct: Yes - Block Size: 2MB - Job Count: 32 - Disk Target: Default Test DirectoryBcachefsF2FSBtrfsEXT4XFS2K4K6K8K10KSE +/- 53.06, N = 3SE +/- 91.69, N = 8SE +/- 44.48, N = 3SE +/- 58.12, N = 3SE +/- 64.98, N = 310111.7310432.6910720.0910798.6510883.31MIN: 10037.07 / MAX: 10214.38MIN: 10119.85 / MAX: 10855.14MIN: 10631.46 / MAX: 10770.97MIN: 10696.74 / MAX: 10898.04MIN: 10754.18 / MAX: 10960.581. (CC) gcc options: -rdynamic -ltcmalloc -ll -lnuma -lz -lm -laio -lpthread -ldl -lcurl -lssl -lcrypto -std=gnu99 -ffast-math -include -O3 -fcommon -march=native

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 with a variable number of concurrent repetitions -- up to the maximum number of CPU threads available. Learn more via the OpenBenchmarking.org test page.

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.41.2Threads / Copies: 8EXT4XFSF2FSBtrfsBcachefs20406080100SE +/- 0.06, N = 3SE +/- 0.25, N = 3SE +/- 0.67, N = 9SE +/- 0.30, N = 3SE +/- 0.51, N = 395.3087.2784.3473.3857.211. (CC) gcc options: -O2 -lreadline -ltermcap -lz -lm

Flexible IO Tester

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 3.35Type: Random Read - Engine: IO_uring - Buffered: No - Direct: Yes - Block Size: 4KB - Job Count: 32 - Disk Target: Default Test DirectoryBcachefsBtrfsXFSF2FSEXT4300K600K900K1200K1500KSE +/- 1208.88, N = 3SE +/- 3682.01, N = 3SE +/- 3432.72, N = 3SE +/- 3142.11, N = 3SE +/- 912.07, N = 3158110492566156572015687671573677MIN: 487738.18 / MAX: 499795.26MIN: 1559531.51 / MAX: 1571388.76MIN: 1563469.75 / MAX: 1574343.53MIN: 1571879.93 / MAX: 1574845.881. (CC) gcc options: -rdynamic -ltcmalloc -ll -lnuma -lz -lm -laio -lpthread -ldl -lcurl -lssl -lcrypto -std=gnu99 -ffast-math -include -O3 -fcommon -march=native

OpenBenchmarking.orgMiB/s, More Is BetterFlexible IO Tester 3.35Type: Sequential Read - Engine: IO_uring - Buffered: No - Direct: Yes - Block Size: 2MB - Job Count: 1 - Disk Target: Default Test DirectoryBcachefsF2FSBtrfsEXT4XFS2K4K6K8K10KSE +/- 76.79, N = 3SE +/- 8.08, N = 3SE +/- 2.04, N = 3SE +/- 5.93, N = 3SE +/- 3.31, N = 310331.1611387.5011396.0211448.2111483.75MIN: 10187.06 / MAX: 10449.23MIN: 11373.02 / MAX: 11400.95MIN: 11393.15 / MAX: 11399.97MIN: 11439.15 / MAX: 11459.36MIN: 11477.88 / MAX: 11489.351. (CC) gcc options: -rdynamic -ltcmalloc -ll -lnuma -lz -lm -laio -lpthread -ldl -lcurl -lssl -lcrypto -std=gnu99 -ffast-math -include -O3 -fcommon -march=native

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 with a variable number of concurrent repetitions -- up to the maximum number of CPU threads available. Learn more via the OpenBenchmarking.org test page.

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.41.2Threads / Copies: 2BtrfsBcachefsEXT4F2FSXFS1632486480SE +/- 0.40, N = 3SE +/- 0.53, N = 3SE +/- 1.23, N = 12SE +/- 0.47, N = 3SE +/- 0.27, N = 369.9351.5944.1541.2234.061. (CC) gcc options: -O2 -lreadline -ltermcap -lz -lm

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.41.2Threads / Copies: 4BtrfsEXT4F2FSXFSBcachefs1632486480SE +/- 0.16, N = 3SE +/- 0.60, N = 3SE +/- 0.66, N = 3SE +/- 0.17, N = 3SE +/- 0.33, N = 371.2066.3657.7752.8452.811. (CC) gcc options: -O2 -lreadline -ltermcap -lz -lm