Процессор

Как ограничить использование процессора процессом в Linux

Как ограничить использование процессора процессом в Linux
За время существования Linux вы, должно быть, видели, что некоторые процессы занимают все циклы ЦП (загрузка ЦП 90-99%), из-за чего ваш компьютер почти не отвечает, пока он не завершит свою работу. Это может быть нормально, если процесс занимает несколько секунд. Но что, если это займет много времени? Не очень приятно сидеть и смотреть на свой неотзывчивый компьютер минуты и часы, верно? Что ж, у Linux есть много замечательных инструментов, чтобы сделать эти не очень хорошо процессы к красивый процессы.

Вы можете установить, сколько ЦП может иметь один процесс. Если процессу действительно требуется много мощности процессора, вы можете запустить несколько команд, чтобы дать ему все циклы простоя ЦП (циклы ЦП, которые вам не нужны). Таким образом, вам никогда не придется долго сидеть и смотреть на неотзывчивый компьютер.

В этой статье я покажу вам, как ограничить использование процессора процессом в Linux. Я собираюсь использовать CentOS 7 в этой статье. Но любой современный дистрибутив Linux должен работать. Итак, приступим.

Ограничение использования ЦП с помощью nice и renice:

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

Каждый процесс в Linux имеет свою ценность. Значение nice определяет, какой процесс имеет более высокий приоритет, а какой - более низкий. Хорошее значение может быть от -20 до 19. Процесс со значением nice, равным -20, будет иметь наивысший приоритет и будет использовать наибольшее количество циклов ЦП. Процесс со значением nice 19 будет иметь самый низкий приоритет и будет использовать ЦП, если никакие другие процессы не используют только его.

Есть два способа установить хорошее значение процесса. Вы можете начать процесс с помощью красивый команда для установки приятного значения при запуске процесса. Или вы можете использовать Ренис команда для установки хорошего значения после запуска процесса.

Чтобы установить хорошее значение при запуске процесса, запустите процесс следующим образом:

$ nice -n NICE_VALUE COMMAND_TO_RUN

ПРИМЕЧАНИЕ: Здесь NICE_VALUE может быть что угодно от -С 20 до 19 а также COMMAND_TO_RUN любая команда, которую вы хотите запустить с хорошим значением NICE_VALUE.

Например, скажем, вы хотите запустить спать команда с хорошим значением 14. Выполните команду следующим образом:

$ nice -n 14 сна 40000 &

Теперь вы можете проверить, правильно ли установлено значение nice, используя команду top. Вы можете перечислить все процессы, которые вы запустили (как ваш логин), с помощью следующей команды:

$ ps -fl

Как видите, хорошее значение процесса установлено на 14.

Теперь, если вы хотите изменить значение nice ваших существующих процессов, тогда все, что вам нужно, это идентификатор процесса (PID) процесса, для которого вы хотите изменить значение nice. Вы можете использовать ps aux команда или вершина команда, чтобы найти идентификатор процесса или PID.

Тогда ты можешь бежать Ренис команду следующим образом, чтобы изменить значение nice существующего процесса:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Как видите, приятное значение процесса с PID 6422 изменилось.

Ограничение использования ЦП с помощью CGROUPS:

Полная форма ГРУППЫ является Cконтроль граммгруппы. Это функции ядра Linux, используемые для ограничения ресурсов для обработки групп, таких как (ЦП, память, разрешения и многое другое) в Linux.

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

Инструменты управления CGROUPS не устанавливаются на CentOS 7 по умолчанию. Но он доступен в официальном репозитории пакетов CentOS 7.

Сначала обновите кеш репозитория пакетов YUM с помощью следующей команды:

$ sudo yum makecache

Теперь установите инструменты управления CGROUPS с помощью следующей команды:

$ sudo yum установить libcgroup-tools

Теперь нажмите у а затем нажмите .

Он должен быть установлен.

Вы можете ограничить использование ЦП одной группой. Например, вы можете использовать CGROUPS, чтобы указать процессу в CGROUP использовать, скажем, 100 мс из каждых 1000 мс (или .1 с из каждой 1 с) процессорного времени.

Сначала создайте CGROUP с помощью следующей команды:

$ sudo cgcreate -g процессор: / cpulimit

ПРИМЕЧАНИЕ: Здесь, cpulimit это имя группы, которая контролирует Процессор Применение.

Теперь вам нужно установить Процессор.cfs_period_us а также Процессор.cfs_quota_us собственность на cpulimit группа.

В этом примере 1000 мс (миллисекунды) или 1000000 мкс (микросекунды) должны быть установлены на Процессор.cfs_period_us свойство и 100 мс или 100000 мкс должны быть установлены на Процессор.cfs_quota_us имущество.

Выполните следующие команды, чтобы установить эти свойства на cpulimit группа:

$ sudo cgset -r процессор.cfs_period_us = 1000000 cpulimit
$ sudo cgset -r процессор.cfs_quota_us = 100000 cpulimit

Теперь вы можете запустить следующую команду, чтобы проверить, правильно ли установлены все свойства:

$ sudo cgget -g процессор: cpulimit

ПРИМЕЧАНИЕ: Здесь, cpulimit это название CGROUP и Процессор это ресурс, который я ограничиваю.

Как вы видете, Процессор.cfs_period_us а также Процессор.cfs_quota_us правильно установлены.

Теперь, какой бы процесс вы ни добавили в cpulimit CGROUP будет использовать 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) от общего числа циклов ЦП.

Теперь, чтобы ограничить ЦП процесса, запустите программу или команду с помощью cgexec следующим образом:

$ sudo cgexec -g cpu: cpulimit ВАША_КОМАНДА

ПРИМЕЧАНИЕ: Здесь, ВАША_КОМАНДА могут быть любые допустимые команды Linux.

Чтобы доказать, что это действительно работает, сначала я собираюсь запустить следующую команду без CGROUPS, а затем с CGROUPS и показать вам результаты.

$ dd if = / dev / zero of = out bs = 1M

Как видите, без CGROUPS команда использует 90% всего ЦП.

Затем я выполнил ту же команду с CGROUPS следующим образом:

$ sudo cgexec -g cpu: cpulimit dd if = / dev / zero of = out bs = 1M

Как видите, загрузка ЦП составляет не более 10%. Процесс не использует больше, чем это.

Вот как вы используете CGROUPS для ограничения использования ЦП процессом в Linux. Спасибо, что прочитали эту статью.

Рекомендации:

[1] https: // доступ.Красная шляпа.com / документация / en-us / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu

[2] https: // linux.умри.net / man / 1 / nice

[3] https: // linux.умри.net / man / 8 / renice

Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...
Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...
Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...