Welcher Prozess steuert die CPU-Affinität neuer Python-Prozesse

941
shimao

Ich habe Code geschrieben, um die Affinität jedes Prozesses unter meinem Benutzernamen auf Core 0 festzulegen. Ich habe diesen Code ausgeführt und dann beendet, sobald er fertig war.

Selbst dann, wenn ich ein brandneues Terminal startete und Python damit öffnete, war seine Affinität immer noch auf Core 0 festgelegt. Das erwartete Standardverhalten wäre, dass die neu gestartete Python-Shell eine Affinität zu Core 0 und Core 1 hätte .

Es ist auch nicht so, dass irgendetwas dazu führt, dass alle Python-Prozesse dieselbe CPU-Affinität haben. Ich habe dies überprüft, indem ich zwei verschiedene Python-Prozesse auf zwei verschiedene Kerne eingestellt habe.

Ein anderes Experiment, das ich durchführte, besteht darin, die Affinität von nur Python-Prozessen auf Core 0 zu setzen (alle anderen Prozesse bleiben unberührt). Als ich dann eine neue Python-Shell startete, war ihre Affinität noch normal (nicht nur auf 0 festgelegt). Dies legt nahe, dass es einen speziellen Nicht-Python-Prozess gibt, der die CPU-Affinität neuer Python-Prozesse steuert.

Meine Frage ist: Was ist dieser besondere Prozess?

Als Referenz, um die CPU-Affinität einzustellen und zu überprüfen, habe ich sie psutil.Process.cpu_affinityaus der Python- psutilBibliothek verwendet.

2
Wenn Sie Code geschrieben haben, um die Affinität jedes Prozesses auf Core 0 festzulegen, warum sind Sie geschockt, dass neue Python-Prozesse auf Core 0 gesetzt werden? Ramhound vor 6 Jahren 2
Weil ich die Affinität jedes existierenden Prozesses auf Core 0 eingestellt habe - was keinen Einfluss auf die Affinität von neuen Prozessen haben sollte, die danach gestartet wurden. Der Code kann die Affinität neuer Prozesse nicht berührt haben, da diese zum Zeitpunkt der Code-Ausführung nicht vorhanden waren. shimao vor 6 Jahren 0
Wenn Sie die Affinität jedes Prozesses auf 0 setzen konnten, können alle untergeordneten Prozesse (egal, auf welchen Python oder welches Terminal Sie sich gerade befinden) diese Affinität erben. Wenn Sie nur das Terminal, auf dem Python gestartet wurde, ändern wollte, sollten Sie nur die Terminalaffinität geändert haben Mokubai vor 6 Jahren 4
Aha. Ich bestätigte dies für mich und stellte fest, dass bash von xfterminal gestartet wurde, das selbst ein Kind von xfsettingsd ist, das ein Kind des init-Prozesses ist. Die Affinität von xfsettingsd wurde auf 0 gesetzt, was alles erklärt. shimao vor 6 Jahren 1

0 Antworten auf die Frage