3

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

Может быть, я хочу зарезервировать один процессор для специальных программ. Может быть, я хочу написать свой собственный оптимизатор процесса. Кто знает. Возможности бесконечны в моем уме.

Возможно ли это в любой ОС? Если нет, то почему? Если нам разрешено разделять память, почему мы не можем иметь такой контроль над процессорами?

Благодарю.

3 ответа3

4

В Linux cpusets должен работать для этого.

1

Это в теории возможно. Самый простой способ сделать что-то похожее на это - использовать платформу виртуализации, которая позволяет назначать конкретные ЦП / ядра конкретной виртуальной машине. Затем вы можете запустить только тот процесс, который вы хотите, на данной виртуальной машине (конечно, с минимальными издержками ОС).

1

Самый простой способ сделать это - установить привязку процессора к данному процессу или указать ОС, на каких логических процессорах (ядрах) этот процесс разрешено запускать. Если вы щелкнете правой кнопкой мыши по процессу в диспетчере задач Windows и выберите Set Affinity... , вы увидите окно, которое выглядит примерно так:

Настройка сродства процессора в windows

В системах на основе Linux вы можете сделать то же самое с taskset утилиты наборов задач или установив соответствующий флаг маски процессора в записи процессов /proc .

К сожалению, нет простого способа удалить все процессы из определенного процессора или автоматически установить конкретную маску для процесса при его запуске - вам понадобится сценарий для отслеживания новых процессов в системе и установки соответствующего соответствия что вы желаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .