Do a bunch of benchmarking and update ceph-benchmarking section
This commit is contained in:
40
content/ceph-benchmarking/benchmarks/random_read.json
Normal file
40
content/ceph-benchmarking/benchmarks/random_read.json
Normal 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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
40
content/ceph-benchmarking/benchmarks/random_write.json
Normal file
40
content/ceph-benchmarking/benchmarks/random_write.json
Normal 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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
1984
content/ceph-benchmarking/benchmarks/raw_random_read.json
Normal file
1984
content/ceph-benchmarking/benchmarks/raw_random_read.json
Normal file
File diff suppressed because it is too large
Load Diff
1984
content/ceph-benchmarking/benchmarks/raw_random_write.json
Normal file
1984
content/ceph-benchmarking/benchmarks/raw_random_write.json
Normal file
File diff suppressed because it is too large
Load Diff
1984
content/ceph-benchmarking/benchmarks/raw_seq_read.json
Normal file
1984
content/ceph-benchmarking/benchmarks/raw_seq_read.json
Normal file
File diff suppressed because it is too large
Load Diff
1984
content/ceph-benchmarking/benchmarks/raw_seq_write.json
Normal file
1984
content/ceph-benchmarking/benchmarks/raw_seq_write.json
Normal file
File diff suppressed because it is too large
Load Diff
40
content/ceph-benchmarking/benchmarks/seq_read.json
Normal file
40
content/ceph-benchmarking/benchmarks/seq_read.json
Normal 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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
40
content/ceph-benchmarking/benchmarks/seq_write.json
Normal file
40
content/ceph-benchmarking/benchmarks/seq_write.json
Normal 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
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
40
content/ceph-benchmarking/fio_randread.ini
Normal file
40
content/ceph-benchmarking/fio_randread.ini
Normal 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
|
||||
40
content/ceph-benchmarking/fio_randwrite.ini
Normal file
40
content/ceph-benchmarking/fio_randwrite.ini
Normal 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
|
||||
40
content/ceph-benchmarking/fio_seqread.ini
Normal file
40
content/ceph-benchmarking/fio_seqread.ini
Normal 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
|
||||
40
content/ceph-benchmarking/fio_seqwrite.ini
Normal file
40
content/ceph-benchmarking/fio_seqwrite.ini
Normal 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
|
||||
@@ -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
14
static/js/chart.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -18,4 +18,6 @@
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="/js/chart.min.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
4
templates/shortcodes/details.md
Normal file
4
templates/shortcodes/details.md
Normal file
@@ -0,0 +1,4 @@
|
||||
<details>
|
||||
<summary>{{ summary }}</summary>
|
||||
{{ body | markdown() }}
|
||||
</details>
|
||||
103
templates/shortcodes/fio_benchmark.md
Normal file
103
templates/shortcodes/fio_benchmark.md
Normal 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>
|
||||
@@ -1,3 +1,3 @@
|
||||
<pre class="mermaid">
|
||||
{{ body }}
|
||||
{{ body }}
|
||||
</pre>
|
||||
|
||||
Reference in New Issue
Block a user