Какой процесс контролирует соответствие процессоров новым процессам Python?

875
shimao

Я написал код, чтобы установить привязку каждого процесса под моим именем только к ядру 0. Я запустил этот код, а затем он вышел, как только закончил.

Затем, даже когда я запустил совершенно новый терминал и открыл с ним python, его привязка по-прежнему была привязана к ядру 0. Ожидаемое поведение по умолчанию состояло бы в том, что вновь запущенная оболочка python будет привязана как к ядру 0, так и к ядру 1, конечно. ,

Дело не в том, что что-то заставляет все процессы Python иметь одинаковую привязку к процессору - я проверил это, установив два разных процесса Python на два разных ядра.

Другой эксперимент, который я провел, - установить привязку только процессов Python к ядру 0 (все остальные процессы не затрагиваются). Затем, когда я запустил новую оболочку Python, ее сходство было все еще нормальным (не фиксированным только 0). Это говорит о том, что существует какой-то особый не-Python-процесс, который управляет сродством ЦП новых процессов Python.

Мой вопрос: что это за особый процесс?

Для справки, для установки и проверки соответствия процессоров, я использовал библиотеку psutil.Process.cpu_affinitypython psutil.

2
Если вы написали код, чтобы установить сходство каждого процесса с ядром 0, почему вы шокированы тем, что новые процессы Python установлены на ядро ​​0? Ramhound 6 лет назад 2
Потому что я установил сходство каждого существующего процесса на ядро ​​0, что не должно влиять на сходство новых процессов, запускаемых впоследствии. Код не мог повлиять на сходство каких-либо новых процессов, потому что эти процессы не существовали на момент запуска кода. shimao 6 лет назад 0
Если вам удалось установить сходство каждого процесса равным 0, то любые дочерние процессы (независимо от того, запущен ли python или ваш терминал) вполне могут наследовать это сходство. Если вы хотите, чтобы это влияло только на терминал, который запустил python, то вы должны были только изменить привязку этого терминала Mokubai 6 лет назад 4
Понимаю. Я подтвердил это для себя и обнаружил, что bash запускается из xfterminal, который сам является потомком xfsettingsd, который является потомком процесса init. Сходство xfsettingsd установлено в 0, что все объясняет. shimao 6 лет назад 1

0 ответов на вопрос

Похожие вопросы