Ich versuche, eine Reihe von Skripten für einen Spieleserver in Terminator auszuführen. Das einzige Problem dabei ist, dass Terminator alle meine CPU-Kerne erkennt und der PC nachlässt. Gibt es eine Möglichkeit, es zu starten, aber denken Sie, ich habe nur 1 CPU-Kern?
28
Antworten:
Es ist nicht so,
terminator
dass das "Verteilen" auf die gesamte CPU eines bestimmten Prozesses erfolgt. Linux selbst (der Kernel) macht das. Ein Task (Prozess) ist so geplant, dass er standardmäßig auf allen CPUs ausgeführt werden kann. Wenn es Threads verwendet, kann es mehr als eine CPU gleichzeitig verwenden.Um einen Prozess auf eine bestimmte CPU zu beschränken, verwenden Sie den Befehl
taskset
.Dieser Befehl erzwingt, dass my_command nur auf den CPUs 1 oder 2 ausgeführt wird.
Um mehr zu erfahren, geben Sie
man taskset
"Linux-CPU-Affinität" ein oder suchen Sie nach "Linux-CPU-Affinität" (erster Treffer hier ).quelle
kernel.sched_autogroup_enabled = 0
um/etc/sysctl.conf
es Arbeit zu machen. Allerdings habe ich auch festgestellt, dass 13.10 beim Booten häufig Kernel-Panics auftreten, wenn die automatische Gruppierung deaktiviert ist.Obwohl eine andere Antwort bereits die wörtliche Antwort gegeben hat, würde ich die Möglichkeit untersuchen, dass dies nicht richtig gemacht wird. Stattdessen sollten Sie mit dem
nice
Befehl ein Skript ausführen, das den Computer nicht verlangsamen soll (z. B. nicht interaktive Skripts) .Stellen Sie dazu einfach den Befehl
nice command_to_run
voran, den Sie mit nice ausführen möchten, zum Beispiel: Dadurch wird die Priorität des Programms gegenüber anderen Aufgaben aufgehoben, und Ihr Computer wird nicht verlangsamt. Ich verwende diese Technik oft, wenn ich eine lange Kompilierung durchführe, die meinen PC sonst zu einem Crawl verlangsamen würde. Dies hat den Vorteil, dass das Programm alle Kerne verwenden kann, wenn der Computer nicht ausgelastet ist, sie jedoch schnell beendet, wenn Sie etwas ausführen sonst.quelle
taskset nice open terminator
, um beide zu verwenden. Dies ist jedoch zu viel des Guten, da Sie zwei verschiedene Programme verwenden, um den Ressourcenverbrauch des Programms zu verringern.