In a reasonable Ceph setup, block devices for a Ceph OSD are likely the one bottleneck you'll have. When you place the journal (block.wal) or the database (block.db) on a separate SSD, its performance and durability is particularly important.
If you need professional help for your Ceph cluster, try https://croit.io/ !
| ID | Size | Type | Proto | IOPS | #Jobs | Notes |
|---|---|---|---|---|---|---|
| Samsung MZQLW960HMJP-00003 | 960GB | SSD | NVMe | 268030 | 16 | on IBM Power9, 1 job: 34090, then linear up to ~8 jobs |
| Samsung PM863a | 240GB | SSD | SATA | 58876 | 10 | 1 job: 17983, then linear |
| LENSE20512GMSP34MEAT2TA | 512GB | SSD | NVMe | 3164 | 4 | 1 job: 1150, 2: 1588, 3: 2396, 5: 3008 |
| Samsung PM961 | 128GB | SSD | NVMe | 1480 | 1 | 2 jobs: 818, 3: 1092, 4: 525, 5: 569 |
| Samsung MZVLB512HAJQ-000L7 | 512GB | SSD | NVMe | 1164 | 10 | 1 job: 384, 2: 771, 3: 603, 4: 715, 5: 786, 10: 1164 |
| Samsung SSD 970 PRO | 512GB | SSD | NVMe | 840 | 2 | 1 job: 456, 3: 817, 4: 782, 5: 785 |
For each device, the optimal number of jobs and resulting IO operations per second are determined.
The more IOPS in sync mode can be done, the more transactions Ceph can process on the OSD.
Get device model number:
smartctl -a /dev/device
fio Benchmark
Beware, the device will be written to!
You can create a new (LVM) partition when device is already in use and do the benchmark on it.
To find the jobcount with highest IOPS score, try numjob values from 1 to 10:
fio --filename=/dev/device --direct=1 --sync=1 --iodepth=1 --runtime=60 --time_based --rw=write --bs=4k --numjobs=[JOBCOUNT] --group_reporting --name=ceph-journal-write-test
In the output, after the ceph-journal-write-test summary was printed, look for write: IOPS=XXXXX.
This list is intended to be expanded by YOU! Just run the test and submit a pull request!
Corrections and verifications of listed benchmarks would be very helpful, too!
This information is released under CC0.