2

Мне нужен exe-файл, который я могу запустить на своем компьютере с Linux, который может загрузить процессор до указанного процента. Например, если я запускаю exe с аргументом командной строки 50, тогда мой процессор должен быть загружен на 50 процентов. Пожалуйста, предоставьте ваши предложения / решения.

1 ответ1

0

Короткая версия: процесс, который занимает только 50% ЦП, невозможен (альтернативное решение см. Ниже).

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

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

Процент CPU, который вы видите в top или в Диспетчере задач Windows, представляет собой среднее значение загрузки CPU за последний раз. Тем не менее, процессор всегда работает на полной скорости, поэтому 50% использования в течение 1 секунды означает, что для 500 мс он выполнял код, а для 500 мс он спал.


Решение

В Linux есть инструмент cpulimit . Вы можете использовать это так:

cpulimit -p 1313 -l 30

Это ограничит PID 1313 до 30% использования процессора. По данным сайта, это работает так:

Работа cpulimit выполняется в пользовательском пространстве, поэтому она не мешает планировщику Linux. По сути, целевой процесс, который можно указать с помощью pid, имени или командной строки, непрерывно приостанавливается и возобновляется путем отправки ему сигналов SIGSTOP и SIGCONT. Сигналы отправляются cpulimit в соответствующие моменты, в зависимости от лимита, указанного пользователем, и статистики процесса, считанной из /proc.

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