Ich möchte 3 CPU-Kerne deaktivieren und meinen Prozessor auf einem einzelnen Kern ausführen. Ich habe gebrauchten Befehl: maxcpus=1
. Aber danach habe ich diesen Befehl ausgeführt ls /sys/devices/system/cpu
. Es zeigt immer noch cpu0,cpu1,cpu2,cpu3
.
Ich habe auch versucht: echo 0 > /sys/devices/system/cpu3/online
aber ich erhalte den folgenden Fehler: no such file or directory
.
maxcpus=1
Befehl setzen ? Haben Sie diese Zeichenfolgegrub.cfg
als Startoption eingegeben? (Bitte aktualisieren Sie Ihre Frage, anstatt sie in Kommentaren zu beantworten.)maxcpus=1
) variiert je nach Distribution. Auch der/sys
Pfad, den Sie haben, ist einfach der falsche, der richtige Pfad/sys/devices/system/cpu/cpu3/online
.Antworten:
Wie Patrick in einem Kommentar angedeutet hat , hast du den Pfad
/sys
falsch verstanden.Wenn Sie alle CPUs ausschalten möchten, außer
cpu0
:Das Eingeben
maxcpus=1
an einer Shell-Eingabeaufforderung hat keine Auswirkung. Genauer gesagt wird die Variablemaxcpus
auf den Wert1
in dieser Shell gesetzt, was keine weiteren Auswirkungen hat. Sie können die Anzahl der CPUs beim Booten festlegen, indem Siemaxcpus
einen Kernel-Parameter übergeben . Dazu müssen Sie Ihre Bootloader-Konfiguration ändern (zB um die Kernel-Kommandozeile in U-Boot zu ändern).quelle
/sys/devices/system/cpu/online
und./offline
files alle Kerne.core
und auszuschalten?Sie müssen Kerne nicht unbedingt ausschalten oder deaktivieren .
Sie würden cpusets und taskset verwenden
http://man7.org/linux/man-pages/man7/cpuset.7.html
Kurz gesagt, wenn Sie 1 CPU mit 6 Kernen haben, würden Sie cpusets konfigurieren und Ihren Prozess in einem cpuset starten , das nur auf einem Kern konfiguriert ist, z. B. Kern 3. Wenn es sich um einen parallelen Prozess handelt, ist alles auf diesen einen Kern beschränkt. Wenn Sie also 4 Prozesse in einem bestimmten CPU-Satz mit nur einem definierten Kern starten, erhält jeder der 4 Prozesse eine CPU-Auslastung von 25% auf Kern 3.
Darauf aufbauend wird in der Regel ein cpuset so konfiguriert, dass
auch: https://linux.die.net/man/1/taskset
quelle