Linux Prozess an (physischen) CPU Kern binden / wie?

Mal anders betrachtet: Gibt es eine Kernel Option dass der Scheduler physische Kerne bevorzugt nutzt? Also dass man dem Scheduler sagt: Erst wenn alle physischen Kerne Last haben, Prozesse auf die siblings/HT Kerne packen.

Sonst würde ich es so machen (müssen) wie @andy_m4 es vorschlägt, was natürlich geht, aber bei jedem System einer manuellen Anpassung bedarf und nicht wie ein Kernel Image ausgerollt werden kann.
 
Fallaxia schrieb:
was natürlich geht, aber bei jedem System einer manuellen Anpassung bedarf
Inwiefern braucht es eine Anpassung?
Ich frag nur sicherheitshalber nach. Mir ist da nämlich nix bewusst (was nichts bedeuten muss, da ich ja auch nicht alle Hintergründe kenne) und ich möchte vermeiden das irgendein Missverständnis aufgetreten ist.
 
Ich muss das Skript ja so gestalten, dass es den jeweiligen Anwendungsnamen (der sich mit der Version stets ändert) erkennt und dessen PID ausliest um sie dann einem Kern zuzuordnen. Ich muss also jedesmal wenn sich der Anwendungsname aufgrund der Version oder der Anwendung selbst ändert, das Skript anpassen auf dem System.

Bei der Kernel Scheduler Option wäre das nicht erforderlich.
 
Man könnte alternativ das Programm auch in eine cgroup packen. Man kann der ganzen cgroup eine CPU zuweisen. Vorteil der Lösung: Auch neu erzeugte Child-Prozesse gehören zur cgroup und DU musst da nicht hinter her "assignen". Nachteil: Ich weiß jetzt auf Schlag nicht, wie man das so damit hinbiegt das mehrere physikalische CPUs verwendet werden können. Aus Sicht des Programms ist das dann halt ne Single-Core-CPU aber verhindert zumindest das die Prozesse auf andere Cores herumverschoben werden.
 
@andy_m4

Ja, ich habe es jetzt mit cgroup lösen können und konnte damit die CPU Zuweisung recht einfach gescripted (je nach Anwendung) umsetzen, so dass es automatisch erkannt wird und eine Gruppe nicht mit einer anderen kollidiert, falls mehrere verschiedene Anwendungen laufen, die ein CPU assignment brauchen.
 
Zurück
Oben