Moin!
Wir betreiben einen großen CEPH / Proxmox Cluster und ich finde leider im Moment keinen Ansatz zur Problemlösung der Performanceprobleme. IOStat zeigt extrem hohe Auslastungen einzelner RBDs, wenn ich in einem Pool einen Ceph-Benchmark laufen lassen geht ein bestimmtes RBD an die Wand. Darum mal hier die Frage, ob vielleicht jemand einen Ansatz hat:
Crushmap:
IOStat auf einem der SQL-Nodes (rbd3 ist das SQL-Datastore für die Datenbank)
Alle Nodes sind mit 800er Intel Datacenter-SSDs bestückt (und einigen 200ern). Die Verteilung seht ihr in der Crushmap. Wir replizieren 3fach, jeweils 1x pro Rechenzentrum.
Wenn ich jetzt einen neuen Pool anlege und einen Benchmark laufen lassen, geht das rbd3 ebenfalls auf 100% usage hoch. Die anderen RBD-Volumes haben dieses Problem nicht. Vielleicht jemand eine Idee?
Das Benchmark zeigt 700-900 MB/s (Megabyte/s) Schreibrate über alle 3 Rechenzentren. Also hier ist alles i.O.. Es ist derzeit ein Pool aktiv. Der Pool ist mit 1024 PGs angelegt (mit o.g. Replication-Rule).
Das RBD3 zeigt 12% Utilisation an, /dev/sdb (ist das OSD auf dem Host) aber nur 3%. Auch habe ich 2-3ms write-wait auf dem RBD, aber nur 0.17ms auf /dev/sdb.
Wir betreiben einen großen CEPH / Proxmox Cluster und ich finde leider im Moment keinen Ansatz zur Problemlösung der Performanceprobleme. IOStat zeigt extrem hohe Auslastungen einzelner RBDs, wenn ich in einem Pool einen Ceph-Benchmark laufen lassen geht ein bestimmtes RBD an die Wand. Darum mal hier die Frage, ob vielleicht jemand einen Ansatz hat:
Crushmap:
Code:
# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54
# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class ssd
device 3 osd.3 class ssd
device 4 osd.4 class ssd
device 5 osd.5 class ssd
device 6 osd.6 class ssd
device 7 osd.7 class ssd
device 8 osd.8 class ssd
device 9 osd.9 class ssd
device 10 osd.10 class ssd
device 11 osd.11 class ssd
device 12 osd.12 class ssd
device 13 osd.13 class ssd
device 14 osd.14 class ssd
device 15 osd.15 class ssd
device 16 osd.16 class ssd
device 17 osd.17 class ssd
device 18 osd.18 class ssd
device 19 osd.19 class ssd
device 20 osd.20 class ssd
device 21 osd.21 class ssd
device 22 osd.22 class ssd
device 23 osd.23 class ssd
device 24 osd.24 class ssd
device 25 osd.25 class ssd
device 26 osd.26 class ssd
device 27 osd.27 class ssd
device 28 osd.28 class ssd
device 29 osd.29 class ssd
# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 region
type 10 root
# buckets
host PX10-WW-SN03 {
id -23 # do not change unnecessarily
id -24 class ssd # do not change unnecessarily
# weight 2.912
alg straw2
hash 0 # rjenkins1
item osd.22 weight 0.728
item osd.23 weight 0.728
item osd.24 weight 0.728
item osd.25 weight 0.182
item osd.26 weight 0.182
item osd.27 weight 0.182
item osd.28 weight 0.182
}
host PX10-WW-N04 {
id -19 # do not change unnecessarily
id -20 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.13 weight 0.728
}
host PX10-WW-N03 {
id -17 # do not change unnecessarily
id -18 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.12 weight 0.728
}
host PX10-WW-N05 {
id -31 # do not change unnecessarily
id -32 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.29 weight 0.728
}
datacenter WW {
id -27 # do not change unnecessarily
id -28 class ssd # do not change unnecessarily
# weight 5.094
alg straw2
hash 0 # rjenkins1
item PX10-WW-SN03 weight 2.910
item PX10-WW-N04 weight 0.728
item PX10-WW-N03 weight 0.728
item PX10-WW-N05 weight 0.728
}
host PX10-HBS-N03 {
id -11 # do not change unnecessarily
id -12 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.9 weight 0.728
}
host PX10-HBS-N04 {
id -13 # do not change unnecessarily
id -14 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.10 weight 0.728
}
host PX10-HBS-N05 {
id -15 # do not change unnecessarily
id -16 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.11 weight 0.728
}
host PX10-HBS-SN01 {
id -21 # do not change unnecessarily
id -22 class ssd # do not change unnecessarily
# weight 2.912
alg straw2
hash 0 # rjenkins1
item osd.14 weight 0.728
item osd.15 weight 0.728
item osd.16 weight 0.728
item osd.17 weight 0.182
item osd.18 weight 0.182
item osd.19 weight 0.182
item osd.20 weight 0.182
}
datacenter HBS {
id -25 # do not change unnecessarily
id -30 class ssd # do not change unnecessarily
# weight 5.094
alg straw2
hash 0 # rjenkins1
item PX10-HBS-N03 weight 0.728
item PX10-HBS-N04 weight 0.728
item PX10-HBS-N05 weight 0.728
item PX10-HBS-SN01 weight 2.910
}
host PX10-BW-N03 {
id -3 # do not change unnecessarily
id -4 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.0 weight 0.728
}
host PX10-BW-N04 {
id -5 # do not change unnecessarily
id -6 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.1 weight 0.728
}
host PX10-BW-N05 {
id -7 # do not change unnecessarily
id -8 class ssd # do not change unnecessarily
# weight 0.728
alg straw2
hash 0 # rjenkins1
item osd.2 weight 0.728
}
host PX10-BW-SN02 {
id -9 # do not change unnecessarily
id -10 class ssd # do not change unnecessarily
# weight 2.912
alg straw2
hash 0 # rjenkins1
item osd.3 weight 0.728
item osd.4 weight 0.728
item osd.5 weight 0.728
item osd.6 weight 0.182
item osd.7 weight 0.182
item osd.8 weight 0.182
item osd.21 weight 0.182
}
datacenter BW {
id -26 # do not change unnecessarily
id -29 class ssd # do not change unnecessarily
# weight 5.094
alg straw2
hash 0 # rjenkins1
item PX10-BW-N03 weight 0.728
item PX10-BW-N04 weight 0.728
item PX10-BW-N05 weight 0.728
item PX10-BW-SN02 weight 2.910
}
root default {
id -1 # do not change unnecessarily
id -2 class ssd # do not change unnecessarily
# weight 15.282
alg straw2
hash 0 # rjenkins1
item WW weight 5.094
item HBS weight 5.094
item BW weight 5.094
}
# rules
rule replicated_rule {
id 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type datacenter
step emit
}
# end crush map
IOStat auf einem der SQL-Nodes (rbd3 ist das SQL-Datastore für die Datenbank)
Code:
avg-cpu: %user %nice %system %iowait %steal %idle
1.35 0.00 2.28 0.25 0.00 96.11
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 48.00 0.00 282.00 0.00 4504.00 31.94 0.05 0.17 0.00 0.17 0.10 2.80
sdc 0.00 7.00 0.00 6.00 0.00 76.00 25.33 0.02 2.67 0.00 2.67 2.67 1.60
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 13.00 0.00 76.00 11.69 0.04 3.08 0.00 3.08 1.23 1.60
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rbd1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rbd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rbd2 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
rbd3 0.00 24.00 1.00 172.00 16.00 5248.00 60.86 0.52 3.01 4.00 3.00 0.72 12.40
rbd6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Alle Nodes sind mit 800er Intel Datacenter-SSDs bestückt (und einigen 200ern). Die Verteilung seht ihr in der Crushmap. Wir replizieren 3fach, jeweils 1x pro Rechenzentrum.
Wenn ich jetzt einen neuen Pool anlege und einen Benchmark laufen lassen, geht das rbd3 ebenfalls auf 100% usage hoch. Die anderen RBD-Volumes haben dieses Problem nicht. Vielleicht jemand eine Idee?
Das Benchmark zeigt 700-900 MB/s (Megabyte/s) Schreibrate über alle 3 Rechenzentren. Also hier ist alles i.O.. Es ist derzeit ein Pool aktiv. Der Pool ist mit 1024 PGs angelegt (mit o.g. Replication-Rule).
Das RBD3 zeigt 12% Utilisation an, /dev/sdb (ist das OSD auf dem Host) aber nur 3%. Auch habe ich 2-3ms write-wait auf dem RBD, aber nur 0.17ms auf /dev/sdb.