Dieser ganze Thread sollte nützlich sein.
Ich würde nach einer Möglichkeit suchen, den 'init'-Prozess auf die Ausführung auf CPU 1 zu beschränken.
Im Allgemeinen sollten die letzten Wörter "auf allen CPUs außer 1 laufen". Ich denke, man kann einige Kernel-Parameter verwenden ; irqaffinity
, Sind isolcpus
vielversprechend.
BEARBEITEN:
Über isolcpus
in Kernel - Parameter - Dokumentation :
Diese Option ist die bevorzugte Methode zum Isolieren von CPUs. Die Alternative - die manuelle Einstellung der CPU-Maske für alle Tasks im System - kann zu Problemen und einer suboptimalen Leistung des Lastausgleichs führen.
Ich habe ein paar Tests gemacht. Ergebnisse:
Der Kernel-Parameter
isolcpus
ist der Parameter, mit dem Sie deninit
Prozess einschränken und die CPU (s) isolieren können.Es schien mir, dass der Kernel-Parameter
irqaffinity
die isolierten CPU (s) nicht beeinflusste. Sie benötigen diesen Parameter wahrscheinlich nicht.Als ich CPU0 isolierte, ging es nicht völlig leer . Ist diese System- oder Hardwareanforderung erforderlich, trotz Isolation einige Berechnungen damit durchzuführen? - Ich weiß es nicht.
Als ich isolierte CPU1 oder CPU 7 war es
solide wieein Fels im Leerlauf.
Um die CPU1 zu isolieren, fügen isolcpus=1
Sie Folgendes hinzu grub.cfg
:
linux /vmlinuz-
(… alle aktuellen Parameter hier…)isolcpus=1
ORIGINAL ANTWORT FORTGESETZT:
Alternativ können Sie nach dem Starten des Systems die Affinität aller derzeit ausgeführten Prozesse neu zuweisen, was jedoch weniger elegant erscheint.
Ich stimme zu, dass es weniger elegant wirkt, aber es funktioniert vielleicht gut genug (EDIT: Es kann zu Problemen und suboptimaler Lastausgleichsleistung führen, wie oben angegeben). Es gibt schnelle und schmutzige Einzeiler, die in meinem Debian funktionieren:
sudo bash -c 'cd /proc ; for i in [1-9]* ; do taskset -a -p fffffffe $i ; done'
Ich habe Fehler für einige PIDs, htop
zeigt jedoch, dass ein Kern danach praktisch inaktiv ist. Natürlich müssen Sie Ihr Skript später ausführen, es irgendwie ausschließen oder einfach neu zuweisen:
taskset -a -p 1 PID
Ich gehe davon aus, dass Sie den Einzeiler nicht wiederholen müssen, um neue Prozesse abzudecken, da die CPU-Affinität vererbt wird.