Имейте в виду: Здесь будут драконы.
Когда вы начинаете идти по пути конкретного контроля ресурсов приложений/процессов/потоков до такой степени, вы начинаете буквально открывать ящик Пандоры с проблемами, когда приходит время отладить проблему, которую не учло ваше ограничение скорости.
Тем не менее, если вы считаете, что знаете, что делаете, у вас есть три варианта: красивый
, cpulimit
и контрольные группы (Cgroups).
Вот TL;DR для этих трех методов:
Хороший ¢ хороший {процесс}
Это очень простой способ приоритизации задачи, и он весьма эффективен для одноразового использования, например, для снижения приоритета длительной, ресурсоемкой задачи, которая должна использовать больше ресурсов ЦП, когда машина не используется. другими задачами (или людьми).
Лимит ЦП ¢ cpulimit -l 60 {процесс}
Если производительность вашего сервера снижается (например, останавливается), когда загрузка ЦП превышает определенную величину, тогда cpulimit
может помочь снизить давление в системе.Он делает это, приостанавливая процесс через разные промежутки времени, чтобы удерживать его ниже определенного потолка, отправляя SIGSTOP
и SIGCONT
сигналы процессу. cpulimit
не меняет красивый
значение процесса, вместо этого он отслеживает и контролирует реальное использование ЦП.
Вы обнаружите, что cpulimit
полезно, когда вы хотите убедиться, что процесс не использует больше определенной части ЦП, на что ссылается ваш вопрос, но недостатком является то, что процесс не может использовать все доступное время ЦП, когда система простаивает ( который красивый
позволяет).
CGgroups
sudo cgcreate -g процессор:/сдержанный
sudo cgset -r cpu.shares=768 ограничено
sudo cgexec -g cpu: ограничен {процесс}
Cgroups — контрольные группы — это функция, встроенная в ядро Linux, которая позволяет вам контролировать распределение ресурсов. С помощью Cgroups вы можете указать, сколько ЦП, памяти, пропускной способности, или комбинации этих ресурсов может использоваться процессами, назначенными группе.
Ключевое преимущество Cgroups перед красивый
или же cpulimit
заключается в том, что ограничения применяются к набору процессов; не один. красивый
и cpulimit
также ограничены ограничением использования ЦП процессом, тогда как Cgroups могут ограничивать другие ресурсы процесса.
Если вы спуститесь в кроличью нору Cgroups, вы сможете гипероптимизировать систему для определенного набора задач.