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`
|
5. `mount /dev/rbd0 /mnt/bench`
|
||||||
|
|
||||||
## Benchmarks
|
## 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 %}
|
{% end %}
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
- Try directly on the block device
|
- Try directly on the block device
|
||||||
- Try this using xfs instead of ext4
|
- Try this using xfs instead of ext4
|
||||||
- Try this with and without drive caches
|
- 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>
|
||||||
|
|
||||||
|
<script src="/js/chart.min.js"></script>
|
||||||
{% endblock %}
|
{% 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>
|
||||||
Reference in New Issue
Block a user