Ich poste dies hier, weil meine Erkenntnisse zu diesem Thema entweder veraltet, unvollständig oder aus verschiedenen Gründen nicht geeignet sind.
Ich wollte schon lange lernen, wie man bestimmte vCPUs einer bestimmten VM zuordnet (die die maximal mögliche CPU-Leistung und möglichst wenig CPU-Blockierungen/Kontextwechsel benötigt), während es im selben Knoten andere VMs gibt, die nicht auf die fixierten Kerne zugreifen können (sie müssen nur für die bestimmte VM zugänglich sein) und deren CPU-Zuweisung „standardmäßig“ vom Scheduler vorgenommen wird.
Mein aktuelles bevorzugtes System ist Proxmox (verwendet nur KVM), normalerweise die neueste Version im pvetest-Zweig und der neueste 3.X-Kernel.
Für meine speziellen Anforderungen würde ich, anstatt zu lernen, wie das in meinem aktuellen System funktioniert, in Erwägung ziehen, auf andere Systeme oder sogar Hypervisoren umzusteigen, die eine erweiterte Verwaltung der CPU-Zuweisung an VMs ermöglichen. Mein Budget für kostenpflichtige Lösungen ist nahezu null, und ich schließe sie nicht von vornherein aus, aber sie sollten sehr günstig sein, um sie in Betracht zu ziehen.
Vielen Dank im Voraus und ich hoffe, dass die (vielen möglichen) Antworten hierauf für viele andere Leute nützlich sind.
Diese Funktion könnte für Benutzer/Administratoren von Virtualisierungshosts nützlich sein (aus welchem Grund auch immer, in meinem Fall, weil ich verschiedene Betriebssysteme verwende), bei denen die meisten VMs eine geringe CPU-Zeit benötigen, es aber eine (oder mehrere) gibt, die eine garantiert hohe CPU-Zeit benötigen.
Antwort1
Es scheint, dass Proxmox bereits einige ähnliche Optionen hat.
https://forum.proxmox.com/threads/numa-config-option.21313/
Ja, es wird CPU-Pinning (Affinität) verwendet. Meines Wissens wird durch die Aktivierung von NUMA der Planungsalgorithmus so geändert, dass er nun NUMA-Knoten auf der zugrunde liegenden physischen CPU erkennt. Daher wird versucht, die vCPU-Planung nach Möglichkeit innerhalb desselben NUMA-Knotens zu halten.