У меня есть обычный процесс, который не так важен, но потребляет так много энергии процессора, и у меня есть другой процесс, который действительно важен, но он проводит большую часть времени бездействующим, но когда он получил работу, ему действительно нужна высокая вычислительная мощность
Я пытался работать с nice -20 ./low_priority_process
и, nice --20 ./high_priority_process
но все еще с более низким приоритетом, потреблял значительный объем ресурсов ЦП, когда требуется процесс с высоким приоритетом, как я могу запустить процесс, который будет действительно работать или даже автоматически приостанавливаться, когда другой процесс использует мощность ЦП
RR
планирование для процесса с высоким приоритетом.Ответы:
Взгляните на cgroups , он должен предоставить именно то, что вам нужно - резервирование процессора (и многое другое). Я бы посоветовал прочитать контроль приоритетов приложений, использующих cgroups .
Тем не менее, поместите важные, но часто бездействующие процессы в группу с выделенным 95% ЦП, а остальные приложения - в другое с выделенными 5% - вы получите (почти) всю мощность для ваших задач, когда это необходимо, а постоянно Энергозатратный процесс получит только 5% максимум в то время. Когда вычислительные всплески исчезнут, производительность всех процессоров будет снижена для остальных процессов. В качестве преимущества, если вы создадите специальную группу (с минимальными требованиями к производительности) для таких процессов, как
sshd
вы, вы сможете войти в систему, независимо от того, что пытается получить весь процессор, который он может - для этого будет отведено некоторое время процессораsshd
.источник
cpulimit
илиnice
изменить группу процесса? потому что я, если cgroup является вызовом API, я не могу перекомпилировать ни одно из этих приложений, чтобы использоватьsystemd
, по крайней мере, в некоторых случаях) «крадут» интерфейс cgroups у пользователей, которые должны использовать интерфейс системы init (обычно это специальная команда). Прочитайте связанный ответ и статью в Википедии. В самом деле. :)libcgroup
пакет, который поставляется с утилитами для работы с cgroups, включая daemon (cgrulesengd
), который может фактически сортировать процессы в группы в зависимости от некоторых условий.Если приоритет процесса (хорошее значение) низкий, он не будет прерывать процесс с более высоким приоритетом. Причина вы видите процесс низкого приоритета по- прежнему потребляют значительное количество ресурсов ЦП, выше приоритет процесс работает потому , что чем выше приоритет процесс не что занят. Вероятно, жду на IO. Используйте
chrt -p -i 0 $PID
для запуска процесса с еще более низким приоритетом, чемnice 19 -p $PID
(при условии, что мы говорим о Linux здесь).chrt -p -i 0 $PID
помещает процесс в «истинный» планировщик простоя.http://linux.die.net/man/1/chrt
источник
Попробуйте этот пример, чтобы запустить процесс как процесс с низким уровнем.
Если ты работаешь хорошо, tar xvf asets.zip
использование
хороший tar xvf assets.zip
После этого выпуска
сверху, чтобы следить за процессом распаковать с
PS Aux | grep "tar"
Попробуйте что-то конкретное с cpulimit
cpulimit -l 50 python 0 9999999999> / dev / null &
источник
-20
это «низкий приоритет» и--20
«высокий приоритет», посмотрите на двойную черту дляnice
команды. и да, я полностью понимаю, о хорошем значении, но мой вопрос в том, есть ли способ отличить планировщик от использования хорошего значения-n -20
,-n 20
и т. Д.htop
илиtop
илиps
или что-то ещеДля будущих посетителей, вот полный пример
nice
со стрессом .stress
:apt-get install stress
nice -20 stress --cpu 2
top
:Это показывает, что оба процессора полностью заняты.
nice --20 stress --cpu 1
top
Это показывает, что процесс нагрузки одноядерного процессора получает полную загрузку процессора, тогда как процессы с более низким приоритетом совместно используют оставшийся 1 процессор
stress
вызовы и просто запустить один трехпроцессный процессstress --cpu 3
, каждый из них получит по 66% ЦП.источник