Kubernetes v1.31: Optimierte CPU-Verteilung für mehr Leistung auf Multi-Core-Prozessoren
Entdecken Sie die neue CPUManager-Funktion in Kubernetes v1.31, die eine verbesserte CPU-Verteilung über Kerne ermöglicht und die Leistung steigert.
In Kubernetes v1.31 freuen wir uns, eine bedeutende Verbesserung im CPU-Management vorzustellen: die Option distribute-cpus-across-cores
für die CPUManager statische Richtlinie. Diese Funktion befindet sich derzeit in der Alpha-Phase und ist standardmäßig verborgen. Sie markiert einen strategischen Wandel, der darauf abzielt, die CPU-Auslastung zu optimieren und die Systemleistung auf Multi-Core-Prozessoren zu verbessern.
Verständnis der Funktion
Traditionell tendiert der CPUManager von Kubernetes dazu, CPUs so kompakt wie möglich zuzuweisen, indem er sie in der Regel auf die geringste Anzahl physischer Kerne packt. Diese Zuweisungsstrategie ist entscheidend, da CPUs auf demselben physischen Host weiterhin einige Ressourcen des physischen Kerns teilen, wie z.B. den Cache und die Ausführungseinheiten.
Während der Standardansatz die Inter-Core-Kommunikation minimiert und unter bestimmten Szenarien vorteilhaft sein kann, stellt er auch eine Herausforderung dar. CPUs, die sich einen physischen Kern teilen, können zu Ressourcenkonflikten führen, was wiederum zu Leistungsengpässen führen kann, die insbesondere bei CPU-intensiven Anwendungen bemerkbar sind.
Die neue Funktion distribute-cpus-across-cores
geht dieses Problem an, indem sie die Zuweisungsstrategie ändert. Wenn diese Option aktiviert ist, weist die CPUManager Richtlinie an, die CPUs (Hardware-Threads) so weit wie möglich über mehrere physische Kerne zu verteilen. Diese Verteilung soll Konflikte zwischen CPUs, die sich denselben physischen Kern teilen, minimieren und so die Leistung von Anwendungen verbessern, indem ihnen dedizierte Kernressourcen zur Verfügung gestellt werden.
Technisch gesehen wird innerhalb dieser statischen Richtlinie die Liste der verfügbaren CPUs in der im Diagramm dargestellten Weise neu angeordnet, um CPUs von separaten physischen Kernen zuzuweisen.
Aktivieren der Funktion
Um diese Funktion zu aktivieren, müssen Benutzer zunächst das Kubelet-Flag --cpu-manager-policy=static
oder das Feld cpuManagerPolicy: static
in der Kubelet-Konfiguration hinzufügen. Anschließend kann die Option --cpu-manager-policy-options distribute-cpus-across-cores=true
oder distribute-cpus-across-cores=true
zu ihren CPUManager-Richtlinieneinstellungen in der Kubernetes-Konfiguration hinzugefügt werden. Diese Einstellung weist den CPUManager an, die neue Verteilungsstrategie zu übernehmen. Es ist wichtig zu beachten, dass diese Richtlinienoption derzeit nicht in Verbindung mit den Optionen full-pcpus-only
oder distribute-cpus-across-numa
verwendet werden kann.
Aktuelle Einschränkungen und zukünftige Richtungen
Wie bei jeder neuen Funktion, insbesondere einer in der Alpha-Phase, gibt es Einschränkungen und Bereiche für zukünftige Verbesserungen. Eine wesentliche aktuelle Einschränkung besteht darin, dass distribute-cpus-across-cores
nicht mit anderen Richtlinienoptionen kombiniert werden kann, die in Bezug auf CPU-Zuweisungsstrategien möglicherweise in Konflikt stehen. Diese Einschränkung kann die Kompatibilität mit bestimmten Arbeitslasten und Bereitstellungsszenarien beeinträchtigen, die auf spezialisierte Ressourcenverwaltung angewiesen sind.
Wir sind jedoch bestrebt, die Kompatibilität und Funktionalität der Option distribute-cpus-across-cores
zu verbessern. Zukünftige Updates werden sich darauf konzentrieren, diese Kompatibilitätsprobleme zu lösen, sodass diese Richtlinie nahtlos mit anderen CPUManager-Richtlinien kombiniert werden kann. Unser Ziel ist es, ein flexibleres und robusteres Rahmenwerk für die CPU-Zuweisung zu bieten, das sich an eine Vielzahl von Arbeitslasten und Leistungsanforderungen anpassen kann.
Ein praktisches Beispiel für die Nutzung dieser neuen Funktion könnte ein Unternehmen sein, das rechenintensive Anwendungen betreibt, wie etwa Datenanalysen oder maschinelles Lernen. Durch die Aktivierung der neuen Verteilungsrichtlinie können diese Anwendungen von einer besseren CPU-Leistung profitieren, was zu schnelleren Ergebnissen und effizienteren Abläufen führt. Bei ayedo unterstützen wir Unternehmen dabei, Kubernetes optimal zu nutzen und diese neuen Funktionalitäten in ihre Arbeitsabläufe zu integrieren.
Quelle: Kubernetes Blog