Hallo,
ich bin gerade dabei ein 3-Node-Cluster mit Ceph aufzubauen und zu testen. Folgende Hardware wird verwendet:
Das ist sogar noch einer der schlechteren. Ich hatte sogar einen mit bisschen mehr als 1164 IOPS. Leider nicht weg gesichert. Mit Fio sah es so aus, nach paar Optimierungen:
Qperf auf dem Storage-Netzwerk mit den Mellanox:
Ich habe dann die Pools gelöscht und nun final saubere Benchmarks zu erzeugen um diese zu dokumentieren. Nun habe ich diese Ergebnisse mit rados:
Was hier auffällt sind die besonders hohen Werte für "Stddev Bandwith" die normalerweise vorher eher unter 100 lagen. Warum sind diese so hoch? Und warum bricht hier so die Bandbreite weg und IOPS ein?
Meine Optimierungen:
Jemand eine Idee woher die Performance-Einbuße herkommen?
Gruß
ich bin gerade dabei ein 3-Node-Cluster mit Ceph aufzubauen und zu testen. Folgende Hardware wird verwendet:
- AMD Epyc 7543p
- 256Gb DDR4-3200
- pro Node 4x Samsung PN1733 TB MZWLJ1T9HBJR (als OSD)
- Mellanox ConnectX-6 100Gbit
Code:
Total time run: 100.012
Total writes made: 96448
Write size: 4194304
Object size: 4194304
Bandwidth (MB/sec): 3857.47
Stddev Bandwidth: 800.572
Max bandwidth (MB/sec): 4312
Min bandwidth (MB/sec): 384
Average IOPS: 964
Stddev IOPS: 200.143
Max IOPS: 1078
Min IOPS: 96
Average Latency(s): 0.0165887
Stddev Latency(s): 0.0261776
Max latency(s): 1.18573
Min latency(s): 0.00493058
Das ist sogar noch einer der schlechteren. Ich hatte sogar einen mit bisschen mehr als 1164 IOPS. Leider nicht weg gesichert. Mit Fio sah es so aus, nach paar Optimierungen:
Code:
fio --ioengine=rbd --pool=benchmark --rbdname=test_benchmark --direct=1 --fsync=1 --rw=write --bs=4k --numjobs=1 --iodepth=1 --runtime=60 --time_based --group_reporting --name=4k-sync-write-1
Code:
4k-sync-write-1: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=rbd, iodepth=1
fio-3.25
Starting 1 process
Jobs: 1 (f=1): [W(1)][100.0%][w=7867KiB/s][w=1966 IOPS][eta 00m:00s]
4k-sync-write-1: (groupid=0, jobs=1): err= 0: pid=3598016: Mon Feb 7 10:06:43 2022
write: IOPS=1962, BW=7849KiB/s (8038kB/s)(460MiB/60001msec); 0 zone resets
slat (nsec): min=1670, max=435085, avg=3444.69, stdev=1876.55
clat (usec): min=6, max=8450, avg=19.71, stdev=24.93
lat (usec): min=11, max=8535, avg=23.15, stdev=25.33
clat percentiles (nsec):
| 1.00th=[12992], 5.00th=[15168], 10.00th=[15552], 20.00th=[15936],
| 30.00th=[16512], 40.00th=[18304], 50.00th=[19328], 60.00th=[20096],
| 70.00th=[20864], 80.00th=[22144], 90.00th=[24960], 95.00th=[28544],
| 99.00th=[31872], 99.50th=[33536], 99.90th=[39168], 99.95th=[41216],
| 99.99th=[61184]
bw ( KiB/s): min= 368, max= 8616, per=100.00%, avg=7921.42, stdev=971.49, samples=118
iops : min= 92, max= 2154, avg=1980.36, stdev=242.87, samples=118
lat (usec) : 10=0.05%, 20=59.56%, 50=40.37%, 100=0.02%, 250=0.01%
lat (msec) : 10=0.01%
fsync/fdatasync/sync_file_range:
sync (usec): min=48, max=1411.4k, avg=482.92, stdev=4113.19
sync percentiles (usec):
| 1.00th=[ 416], 5.00th=[ 429], 10.00th=[ 437], 20.00th=[ 445],
| 30.00th=[ 453], 40.00th=[ 457], 50.00th=[ 465], 60.00th=[ 469],
| 70.00th=[ 474], 80.00th=[ 482], 90.00th=[ 494], 95.00th=[ 506],
| 99.00th=[ 652], 99.50th=[ 791], 99.90th=[ 2147], 99.95th=[ 2704],
| 99.99th=[ 4883]
cpu : usr=2.07%, sys=1.28%, ctx=235623, majf=17, minf=9
IO depths : 1=200.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,117741,0,117741 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=7849KiB/s (8038kB/s), 7849KiB/s-7849KiB/s (8038kB/s-8038kB/s), io=460MiB (482MB), run=60001-60001msec
Qperf auf dem Storage-Netzwerk mit den Mellanox:
Code:
root@pve2:~# qperf -vvs 10.255.244.50 tcp_lat
tcp_lat:
latency = 11.4 us
msg_rate = 87.5 K/sec
loc_send_bytes = 87.5 KB
loc_recv_bytes = 87.5 KB
loc_send_msgs = 87,518
loc_recv_msgs = 87,517
rem_send_bytes = 87.5 KB
rem_recv_bytes = 87.5 KB
rem_send_msgs = 87,518
rem_recv_msgs = 87,518
Ich habe dann die Pools gelöscht und nun final saubere Benchmarks zu erzeugen um diese zu dokumentieren. Nun habe ich diese Ergebnisse mit rados:
Code:
Total time run: 100.257
Total writes made: 68783
Write size: 4194304
Object size: 4194304
Bandwidth (MB/sec): 2744.27
Stddev Bandwidth: 1201.76
Max bandwidth (MB/sec): 4296
Min bandwidth (MB/sec): 0
Average IOPS: 686
Stddev IOPS: 300.444
Max IOPS: 1074
Min IOPS: 0
Average Latency(s): 0.0232648
Stddev Latency(s): 0.147945
Max latency(s): 3.35392
Min latency(s): 0.00477104
Was hier auffällt sind die besonders hohen Werte für "Stddev Bandwith" die normalerweise vorher eher unter 100 lagen. Warum sind diese so hoch? Und warum bricht hier so die Bandbreite weg und IOPS ein?
Code:
pveversion -v
proxmox-ve: 7.1-1 (running kernel: 5.13.19-4-pve)
pve-manager: 7.1-10 (running version: 7.1-10/6ddebafe)
pve-kernel-helper: 7.1-10
pve-kernel-5.13: 7.1-7
pve-kernel-5.13.19-4-pve: 5.13.19-9
pve-kernel-5.13.19-2-pve: 5.13.19-4
ceph: 16.2.7
ceph-fuse: 16.2.7
corosync: 3.1.5-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.22-pve2
libproxmox-acme-perl: 1.4.1
libproxmox-backup-qemu0: 1.2.0-1
libpve-access-control: 7.1-6
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.1-2
libpve-guest-common-perl: 4.0-3
libpve-http-server-perl: 4.1-1
libpve-storage-perl: 7.1-1
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 4.0.11-1
lxcfs: 4.0.11-pve1
novnc-pve: 1.3.0-1
proxmox-backup-client: 2.1.5-1
proxmox-backup-file-restore: 2.1.5-1
proxmox-mini-journalreader: 1.3-1
proxmox-widget-toolkit: 3.4-5
pve-cluster: 7.1-3
pve-container: 4.1-3
pve-docs: 7.1-2
pve-edk2-firmware: 3.20210831-2
pve-firewall: 4.2-5
pve-firmware: 3.3-5
pve-ha-manager: 3.3-3
pve-i18n: 2.6-2
pve-qemu-kvm: 6.1.1-1
pve-xtermjs: 4.16.0-1
qemu-server: 7.1-4
smartmontools: 7.2-1
spiceterm: 3.2-2
swtpm: 0.7.0~rc1+2
vncterm: 1.7-1
zfsutils-linux: 2.1.2-pve1
Meine Optimierungen:
- RX/TX Buffer bei den Mellanox Karten auf 8192
- MTU 9000
- cpupower frequency-set -g performance
- cpupower idle-set -D 11
Jemand eine Idee woher die Performance-Einbuße herkommen?
Gruß
Last edited: