Zuletzt aktualisiert:
Ein interessantes Performance-Thema aus den aktuellen XenServer 9 Known Issues, das gerade in größeren Citrix-Umgebungen leicht übersehen werden kann.
Wenn die CPUs eines XenServer-Hosts vollständig ausgelastet sind, kann es zu sogenanntem NUMA Node Drift kommen.
Was bedeutet das?
Normalerweise versucht XenServer, die vCPUs einer VM auf dem NUMA-Node auszuführen, auf dem sich auch der zugehörige Arbeitsspeicher befindet.
Unter hoher CPU-Sättigung kann diese Zuordnung verloren gehen:
vCPU → NUMA Node 0
RAM → NUMA Node 1
Die CPU muss dann auf Speicher des anderen NUMA-Nodes zugreifen.
➡️ Höhere Latenz
➡️ Schlechtere Performance
➡️ Citrix-VDAs können spürbar langsamer werden
Das Gemeine daran:
Innerhalb des VDAs muss das zunächst gar nicht besonders auffällig aussehen.
Man sucht dann schnell in Windows, Citrix Policies, FSLogix, Storage oder der Anwendung – obwohl das eigentliche Problem auf Hypervisor-Ebene liegt.
XenServer 9 stellt dafür einen sehr interessanten Performance Counter bereit:
NUMA non-affine vCPUs
Steigt dieser Wert zusammen mit einer hohen Host-CPU-Auslastung, lohnt sich ein genauerer Blick auf die NUMA-Verteilung.
Der von XenServer dokumentierte Workaround ist ebenfalls bemerkenswert:
👉 Mindestens eine CPU auf dem Host frei lassen.
Dadurch kann XenServer die NUMA-Affinität wiederherstellen.
Mein Learning für Citrix-Performance-Analysen:
Nicht nur auf die CPU-Auslastung des VDAs schauen.
Bei stark ausgelasteten XenServer-Hosts auch immer die NUMA-Ebene mitprüfen.
Manchmal ist der VDA nicht langsam, weil ihm CPU fehlt – sondern weil seine CPU am falschen Speicher hängt. 😉