Do a bunch of benchmarking and update ceph-benchmarking section

This commit is contained in:
lol3rrr
2026-02-21 15:53:19 +01:00
parent b09c8f455c
commit e11bfdc559
18 changed files with 8430 additions and 7 deletions

View File

@@ -0,0 +1,40 @@
{
"labels": [
"4k",
"8k",
"64k",
"4M"
],
"iodepths": [
{
"iodepth": 1,
"iops": [
1861.40231,
1642.005967,
774.070432,
52.042194
],
"bw": [
7624303,
13451312,
50729479,
218280781
]
},
{
"iodepth": 32,
"iops": [
26503.449885,
25176.038264,
11381.14679,
280.431202
],
"bw": [
108558130,
206242105,
745874836,
1176213713
]
}
]
}

View File

@@ -0,0 +1,40 @@
{
"labels": [
"4k",
"8k",
"64k",
"4M"
],
"iodepths": [
{
"iodepth": 1,
"iops": [
630.212326,
610.429652,
478.317389,
31.107334
],
"bw": [
2581349,
5000639,
31347008,
130473617
]
},
{
"iodepth": 32,
"iops": [
4251.008233,
4097.741855,
3171.479994,
70.55164
],
"bw": [
17412129,
33568701,
207846112,
295915024
]
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
{
"labels": [
"4k",
"8k",
"64k",
"4M"
],
"iodepths": [
{
"iodepth": 1,
"iops": [
2686.555224,
2365.160581,
1260.345661,
50.320753
],
"bw": [
11004130,
19375395,
82598013,
211060536
]
},
{
"iodepth": 32,
"iops": [
6292.580495,
5255.073816,
3806.315614,
280.459196
],
"bw": [
25774409,
43049564,
249450700,
1176331129
]
}
]
}

View File

@@ -0,0 +1,40 @@
{
"labels": [
"4k",
"8k",
"64k",
"4M"
],
"iodepths": [
{
"iodepth": 1,
"iops": [
779.924003,
761.453976,
571.073815,
25.409044
],
"bw": [
3194568,
6237830,
37425893,
106573254
]
},
{
"iodepth": 32,
"iops": [
2527.712972,
2559.96001,
2039.208825,
61.341578
],
"bw": [
10353512,
20971192,
133641589,
257285227
]
}
]
}

View File

@@ -0,0 +1,40 @@
[global]
ioengine=libaio
direct=1
size=4G
numjobs=1
runtime=60s
time_based
startdelay=5s
group_reporting
stonewall
name=randread
rw=randread
filename=bench
[1io_4k]
iodepth=1
bs=4k
[1io_8k]
iodepth=1
bs=8k
[1io_64k]
iodepth=1
bs=64k
[1io_4M]
iodepth=1
bs=4M
[32io_4k]
iodepth=32
bs=4k
[32io_8k]
iodepth=32
bs=8k
[32io_64k]
iodepth=32
bs=64k
[32io_4M]
iodepth=32
bs=4M

View File

@@ -0,0 +1,40 @@
[global]
ioengine=libaio
direct=1
size=4G
numjobs=1
runtime=60s
time_based
startdelay=5s
group_reporting
stonewall
name=randwrite
rw=randwrite
filename=bench
[1io_4k]
iodepth=1
bs=4k
[1io_8k]
iodepth=1
bs=8k
[1io_64k]
iodepth=1
bs=64k
[1io_4M]
iodepth=1
bs=4M
[32io_4k]
iodepth=32
bs=4k
[32io_8k]
iodepth=32
bs=8k
[32io_64k]
iodepth=32
bs=64k
[32io_4M]
iodepth=32
bs=4M

View File

@@ -0,0 +1,40 @@
[global]
ioengine=libaio
direct=1
size=4G
numjobs=1
runtime=60s
time_based
startdelay=5s
group_reporting
stonewall
name=read
rw=read
filename=bench
[1io_4k]
iodepth=1
bs=4k
[1io_8k]
iodepth=1
bs=8k
[1io_64k]
iodepth=1
bs=64k
[1io_4M]
iodepth=1
bs=4M
[32io_4k]
iodepth=32
bs=4k
[32io_8k]
iodepth=32
bs=8k
[32io_64k]
iodepth=32
bs=64k
[32io_4M]
iodepth=32
bs=4M

View File

@@ -0,0 +1,40 @@
[global]
ioengine=libaio
direct=1
size=4G
numjobs=1
runtime=60s
time_based
startdelay=5s
group_reporting
stonewall
name=write
rw=write
filename=bench
[1io_4k]
iodepth=1
bs=4k
[1io_8k]
iodepth=1
bs=8k
[1io_64k]
iodepth=1
bs=64k
[1io_4M]
iodepth=1
bs=4M
[32io_4k]
iodepth=32
bs=4k
[32io_8k]
iodepth=32
bs=8k
[32io_64k]
iodepth=32
bs=64k
[32io_4M]
iodepth=32
bs=4M

View File

@@ -39,16 +39,60 @@ Setup the benchmark itself:
5. `mount /dev/rbd0 /mnt/bench`
## Benchmarks
{% mermaid() %}
xychart
title "Random Read"
x-axis "Block Size" ["4k", "8k", "4M", "8M"]
y-axis "IOPS" 0000 --> 5000
bar [0, 0, 0, 0]
## Results
{% details(summary="Random Reads - 1 Job") %}
{{ fio_benchmark(path="content/ceph-benchmarking/benchmarks/random_read.json") }}
{% end %}
{% details(summary="Random Writes - 1 Job") %}
{{ fio_benchmark(path="content/ceph-benchmarking/benchmarks/random_write.json") }}
{% end %}
{% details(summary="Sequential Reads - 1 Job") %}
{{ fio_benchmark(path="content/ceph-benchmarking/benchmarks/seq_read.json") }}
{% end %}
{% details(summary="Sequential Writes - 1 Job") %}
{{ fio_benchmark(path="content/ceph-benchmarking/benchmarks/seq_write.json") }}
{% end %}
## TODO
- Try directly on the block device
- Try this using xfs instead of ext4
- Try this with and without drive caches
## Details
{% details(summary="Command to convert raw data into vis data") %}
```bash
jq '[.jobs[] | { iodepth: ."job options".iodepth, bs: ."job options".bs, operations: { iops: .write.iops, bw_bytes: .write.bw_bytes } }]' content/ceph-benchmarking/benchmarks/raw_random_write.json | jq '
# collect sorted unique labels
(map({key:.bs,value:1})|from_entries|keys_unsorted) as $labels
|
{
labels: $labels,
iodepths:
(
group_by(.iodepth)
| map(
. as $group
| {
iodepth: ($group[0].iodepth | tonumber),
iops: [
$labels[] as $l
| ($group[] | select(.bs == $l) | .operations.iops) // null
],
bw: [
$labels[] as $l
| ($group[] | select(.bs == $l) | .operations.bw_bytes) // null
]
}
)
)
}
'
```
{% end %}

14
static/js/chart.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -18,4 +18,6 @@
}
});
</script>
<script src="/js/chart.min.js"></script>
{% endblock %}

View File

@@ -0,0 +1,4 @@
<details>
<summary>{{ summary }}</summary>
{{ body | markdown() }}
</details>

View File

@@ -0,0 +1,103 @@
{% set data = load_data(path=path, format="json") -%}
<canvas id="fio-{{ nth }}-iops"></canvas>
<canvas id="fio-{{ nth }}-bw"></canvas>
<script>
{
const data = {{ data | json_encode() }};
new Chart(document.getElementById('fio-{{ nth }}-iops'), {
type: 'bar',
data: {
labels: data.labels,
datasets: data.iodepths.map((depth_run) => {
return {
label: "IO-Depth " + depth_run.iodepth,
data: depth_run.iops
};
})
},
options: {
scales: {
y: {
title: {
display: true,
text: "IOPS"
},
beginAtZero: true,
ticks: {
// Callback to format SI units
callback: function(value, index, ticks) {
if (value >= 1000000) {
return (value / 1000000) + 'M';
} else if (value >= 1000) {
return (value / 1000) + 'k';
}
return value;
}
}
},
x: {
title: {
display: true,
text: "Block Size"
}
}
},
plugins: {
title: {
display: true,
text: "IOPS"
}
}
}
});
new Chart(document.getElementById('fio-{{ nth }}-bw'), {
type: 'bar',
data: {
labels: data.labels,
datasets: data.iodepths.map((depth_run) => {
return {
label: "IO-Depth " + depth_run.iodepth,
data: depth_run.bw
};
})
},
options: {
scales: {
y: {
title: {
display: true,
text: "Throughput"
},
beginAtZero: true,
ticks: {
// Callback to format SI units
callback: function(value, index, ticks) {
if (value >= 1000000000) {
return (value / 1000000000) + 'GB/s';
} else if (value >= 1000000) {
return (value / 1000000) + 'MB/s';
} else if (value >= 1000) {
return (value / 1000) + 'kB/s';
}
return value;
}
}
},
x: {
title: {
display: true,
text: "Block Size"
}
}
},
plugins: {
title: {
display: true,
text: "Throughput"
}
}
}
});
}
</script>

View File

@@ -1,3 +1,3 @@
<pre class="mermaid">
{{ body }}
{{ body }}
</pre>