- Как ограничить загрузку процессора в Ubuntu Linux с помощью CPULimit
- 1. Одно предварительное примечание
- 2. Установка CPULimit
- 3. Ограничение загрузки CPU
- limits.conf и лимиты потребления ресурсов для пользователей в Linux
- ulimit в Linux и ограничение ресурсов для пользователя
- Ограничение % использования ЦПУ по ПОЛЬЗОВАТЕЛЮ в Linux
- RTFM.WIKI
- Инструменты пользователя
- Инструменты сайта
- Боковая панель
- Навигация
- Линкшэринг
- ALARM!
- Добавить новую страницу
- Реклама
- Содержание
- Как ограничить использование CPU с помощью cpulimit
- Как ограничить использование CPU, с помощью cpulimit (Debian/Ubuntu)
- 1. Предварительные замечания
- 2. Установка cpulimit
- 3. Использование cpulimit
- Как ограничить использование центрального процессора для любого процесса в Linux
- Также рекомендую прочитать:
- 13 Комментариев
- Оставить комментарий Отменить ответ
Как ограничить загрузку процессора в Ubuntu Linux с помощью CPULimit
Оригинал: How to limit CPU usage with CPULimit on Ubuntu Linux
Автор: howtoforge
Дата публикации: 14 августа 2018 года
Перевод: А. Кривошей
Дата перевода: февраль 2019 г.
В этом руководстве описывается, как ограничить загрузку процессора в Ubuntu. Я буду использовать для этой цели утилиту cpulimit. Cpulimit — это утилита, которая ограничивает загрузку ЦП конкретным процессом (задается в процентах, а не во времени ЦП). Это особенно полезно при выполнении пакетных заданий, когда вы не хотите, чтобы они забирали слишком много циклов ЦП. Целью cpulimit является ограничение использования процессора конкретным процессом. Она не изменяет значение nice или другие параметры приоритета планирования, а упраляет реальным использованием процессора. Кроме того, она может динамически и быстро адаптироваться к общей загрузке системы.
Контроль используемого количества циклов ЦП осуществляется путем отправки сигналов SIGSTOP и SIGCONT POSIX процессам. Все дочерние процессы и потоки указанного процесса будут использовать один и тот же процент загрузки ЦП.
1. Одно предварительное примечание
Это руководство основано на использовании серверной версии Ubuntu 18.04 LTS (Bionic Beaver), поэтому вам следует настроить базовую установку сервера Ubuntu 18.04, прежде чем продолжить работу. Система должна иметь статический IP-адрес. Я использую 192.168.1.100 в качестве своего IP-адреса в этом руководстве, а server1.example.com в качестве имени хоста.
2. Установка CPULimit
Для начала нам нужно установить cpulimit следующим образом:
3. Ограничение загрузки CPU
Теперь мы проверим утилиту для ограничения использования процессора. Для этого мы сначала проверим использование ЦП без cpulimit, а затем запустим cpulimit, чтобы оценить ее работу. Давайте проясним это на примере.
Вот пример того, как можно загрузить приложением одноядерный процессор:
Затем мы проверим загрузку процессора командой:
Как мы видим, загрузка ЦП достигла 100%, теперь мы задействуем cpulimit для ограничения использования ЦП. Мы можем вывести этот процесс на передний план, используя команду fg, и закрыть его, нажав CTRL+C.
Теперь мы можем протестировать cpulimit, чтобы увидеть, действительно ли она делает то, что должна. Давайте проверим это следующим образом:
Теперь мы проверим загрузку процессора командой top:
Теперь вы можете видеть, что загрузка процессора снизилась со 100% до 33,8%. Итак, мы успешно проверили в действии утилиту cpulimit, которая может ограничивать использование одноядерного процессора.
Вот пример того, как загрузить приложением многоядерный процессор:
Для проверки количества вашего ядра процессора используйте команду:
В моем случае это было 4.
Теперь мы продолжим проверять загрузку процессора для приложения без cpulimit во всех 4 ядрах следующим образом:
Эта строка запустит команду, используя все ядра, и выдаст вывод в виде:
Теперь проверьте использование процессора с помощью команды top:
Команда dd потребляет почти 100% всех ядер CPU. Далее мы проверим эту команду с помощью утилиты cpulimit. Для этого убейте предыдущие следы команды dd следующим образом:
Теперь используйте cpulimit с той же командой, как показано ниже:
Теперь проверьте использование процессора с помощью утилиты top.
Как вы можете видеть выше, использование CPU ограничено со 100% до почти 20% для многоядерного процессора.
Поздравляем! Мы успешно протестировали cpulimit для ограничения использования процессора в Ubuntu 18.04.
Источник
limits.conf и лимиты потребления ресурсов для пользователей в Linux
Прежде всего, как выяснить процессы каких пользователей потребляют больше всего ресурсов CPU оперативной памяти.
Для текущего момента посмотреть процессы можно при помощи утилиты ps
ps aux —sort=%cpu | grep -v ‘root’ | head -n 35
ps aux —sort=%mem | grep -v ‘root’ | head -n 35
Команды выведут сортированные списки процессов в одной из колонок каждого списка будет указано имя пользователя. Процессы, запущенные от имени root показываться не будут и выведутся только 35 самых активных процессов.
Подобным образом статистику посмотреть не удасться, например, для веб-сервера с mod_php, однаако в большинстве случаев это как раз та информация, которая нужна для того чтобы выбрать пользователей для которых нужно предусмотреть ограничения.
Ограничения нужны на нагруженных серверах, они существует у каждого хостинг провайдера.
Лимитировать количество процессов можно используя механизм ядра cgroups — на практике проще всего установить ограничения отредактировав файл /etc/security/limits.conf и перезагрузив сервер.
Изменять /etc/security/limits.conf может только пользователь root или другой пользователь работающий из под sudo.
Файл хорошо задокументирован, вся необходимая информация находится в нем в комментариях
В общем виде любое правило выглядит так:
domain — это пользователь или группа, для которых лимитируем ресурсы
type — тип ограничения: soft или hard, ограничение soft может быть переопределено пользователем.
item — ресурс, который ограничиваем — обычно это cpu (в минутах) или as — максимальное количество оперативной памяти (в Кб); также можно задать nice level, который не сможет быть превышен процессами пользователя/группы (минимум 20, максимум -19); здесь же можно задать chroot (только для debian)
item — само численное значение
Как уже упоминалось — для того чтобы изменения вступили в силу нужна перезагрузка.
ulimit в Linux и ограничение ресурсов для пользователя
Soft лимиты пользователь может переопределить используя ulimit
Выполнение команды с аргументом -a выведет актуальные ограничения
ulimit -as 1500000
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14685
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14685
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Ключи из вывода можно брать и использовать в командах, которые будут задавать ограничения для текущей терминальной сессии.
Дополнительно следует указывать тип ограничения:
-H — hard
-S — soft
Если не указывать ничего лимиты будут заданы жестко. hard здесь можно задать для текущего пользователя даже без прав root, но изменения не сохранятся после перезагрузки и чтобы ограничения были установлены постоянно нужно редактировать файл, который был рассмотрен ранее.
Создадим ограничение по оперативной памяти в 1500 Мб для пользователя
Выполнив ulimit -Hm сейчас можно увидеть, что ограничение установлено. Получить ту же информацию можно просмотрев лимиты для процесса
Можно указывать идентификатор любого процесса, запущенного от имени пользователя, для которого задали ограничение по памяти
Источник
Ограничение % использования ЦПУ по ПОЛЬЗОВАТЕЛЮ в Linux
Добрый день, суть в следующем: в данный момент есть 2 громоздких приложения, которые занимают 2 сервера на предприятии. Планируется их разместить на одном сервере. Встал вопрос о разделении % использования ЦПУ, памяти и места примерно по 50% на 50%. От виртуализации типа OpenVZ или KVM отказались. Все процессы двух приложений ходят под 2 юзерами, например, user1 и user2. По памяти и месту вроде вариант нашел, как по юзеру ограничить: @user1 hard data 128144 @user1 hard rss 128144 @user1 hard memlock 128144 А вот с % ЦПУ сложнее. Вариант с CPUlimit с ограничением по PID, имени процесса не очень красивый, т.к при рестарте приложений PID процессов будут меняться+ имена всех процессов приложений тоже не известны. Идеальный вариант был бы — ограничить % использования ЦПУ по юзерам, например 65% user1, 35% user2 Прошу помочь знатоков Linux, реален ли такой вариант? Или есть ещё хорошие альтернативы? Спасибо.
А если посмотреть в сторону: взять список процессов юзеров (ps -u user1), узнаем pid, выполняем cpulimit ? Или взять пид фильтруя по комманде ps -C SuperApp1.
Я же написал, что «Вариант с CPUlimit с ограничением по PID, имени процесса не очень красивый, т.к при рестарте приложений PID процессов будут меняться» И каждый раз задавать на новые измененные PID ограничение не очень хотелось бы. Список процессов юзеров взять весь неполучится, т.к в приложениях постоянно динамически добавляются, обновляются процессы, например при входе пользователей в систему и т.д
По поводу cgroups — надо поподробнее почитать про признаки, на основе которых процессы добавляются в группы и происходит ли это атоматически. А если — после рестарта приложения идентификатор процессов изменился и нужно будет добавлять в группы эти процессы вручную, тогда также плохой вариант. Плюс опять же постоянно создаются новые процессы. Именно поэтому и хотелось нечто вариант ограничения по пользователю
Я же написал, что «Вариант с CPUlimit с ограничением по PID, имени процесса не очень красивый, т.к при рестарте приложений PID процессов будут
я думал не надо разъяснять, что:
1. можно поправить стартовые скрипты приложений
2. можно тупо кроном стартовать скрипт
Список процессов юзеров взять весь неполучится, т.к в приложениях постоянно динамически добавляются, обновляются процессы, например при входе пользователей в систему и т.д
вот это уже другой вопрос
PS: так же pid можно узнать pidof yourSuperbApp
Источник
RTFM.WIKI
Ordnung muß sein. Ordnung über alles (18+)
Инструменты пользователя
Инструменты сайта
Боковая панель
Навигация
Линкшэринг
socialite Display:icon facebook twitter
ALARM!
Добавить новую страницу
Реклама
Содержание
Как ограничить использование CPU с помощью cpulimit
Как ограничить использование CPU, с помощью cpulimit (Debian/Ubuntu)
Это руководство покажет, как Вы можете ограничить использование процессом ЦПУ с помощью инструмента cpulimit в Debian/Ubuntu. Cpulimit – это простая программа, которая пытается ограничить использованием процессом ЦПУ (выраженное в процентном соотношении, а не времени ЦПУ). Это полезно для контроля пакетных заданий, если Вы не хотите позволять им съедать слишком много ресурсов процессора. Она не действует на хорошие показатели или другие приоритетные составляющие, только на реальное использование ЦПУ. Также, она способна подстраиваться к общей загрузке системы, быстро и динамично.
Я не даю никаких гарантий, что это будет у Вас работать!
1. Предварительные замечания
Все команды в инструкции я буду запускать из-под root’а, так что логинимся root’ом непосредственно (Debian) или становимся root’ом вот так (Ubuntu):
Если у Вас однопроцессорная машина, то Вы можете установить соотношение от 0 до 100 процентов, что означает, если Вы установите, например, 50%, Ваш процесс не сможет использовать больше чем 500 мс времени ЦПУ каждую секунду. Но если на Вашей машине установлено четыре процессора, процентное соотношение может варьироваться от 0% до 400%, так что установка ограничения в 200% означает использование не больше, чем половины доступной производительности. В любом случае, процентное соотношение такое, какое Вы увидите при запуске top.
Сpulimit должен работать по крайней мере с пользователем подобным тому, который запустил контролируемый процесс. Но лучше всего, если Вы запускаете cpulimit как root, это позволит иметь наивысший приоритет и более точное управление.
2. Установка cpulimit
Сpulimit доступен как пакет для Debian и Ubuntu, так что его можно установить следующим способом:
3. Использование cpulimit
Просмотрите страницу man для cpulimit, чтобы изучить, как его использовать
Сейчас представим, что мы желаем ограничить процесс apache2 до 30%. Вот как мы это сделаем:
Ключ -e принимает имя исполняемого файла программы. Вы можете получить его из данных, выводимых командой top.
Кроме использования имени исполняемого файла, мы можем использовать ID процесса с ключом -p. Вы можете найти ID процесса apache2 следующим образом:
Допустим, что у apache2 ID процесса – 4510; мы сможем ограничить этот процесс до 30% нагрузки ЦПУ следующим образом:
Кроме использования имени исполняемого файла (-e) или ID процесса (-p), мы можем так же передать в cpulimit имя абсолютного пути исполняемого файла программы, с ключом -P; абсолютный путь исполняемого файла apache2 – /usr/sbin/apache2, так что мы используем следующую команду:
Пожалуйста, отметьте себе, что cpulimit будет запущен на переднем плане Вашего терминала пока Вы не завершите его комбинацией CTRL+C – отключение так же удалит все ограничения ЦПУ.
Источник
Как ограничить использование центрального процессора для любого процесса в Linux
OSmaster.org.ua > Linux > Ubuntu > Как ограничить использование центрального процессора для любого процесса в Linux
Вы когда нибудь сталкивались с ситуацией, когда запуск обычного приложения (как например Firefox) приводит к тому, что вся ваша система начинает подвисать? Если у вас, к примеру, работает веб сервер, то последнее что бы вы хотели видеть — это то, как какое то приложение «ложит» всю систему, а с ней и все работающие на ней сайты.
Cpulimit — это приложение в Linux, которое сможет ограничить любой процесс в использовании вашего центрального процессора (CPU). Оно будет полезным, если вы хотите ограничить конкретное приложение в использовании им CPU-ресурса и предотвратить возможный крах системы. Это приложение также будет незаменимым, когда вы хотите преднамеренно запускать ресурсоёмкие приложения.
Примечание: сpulimit работает на всех дистрибутивах Linux, но в нашей статье мы будем использовать Ubuntu для примера.
Инсталляция.
В Ubuntu вы сможете установить Cpulimit используя Центр приложений Ubuntu (Ubuntu Software Center), или набрать следующую команду в терминале:
sudo apt-get install cpulimit
Использование.
Чтобы ограничить процесс используйте следующий синтаксис команды:
sudo cpulimit -p PID -l CPU%
Где PID — это ID процесса запущенного приложения, а CPU% — это процент (число от 0 до 100) CPU-ресурса разрешенного для этого приложения. Вы сможете получить PID из: Система (System) -> Администрирование (Administration) -> Системный монитор (System Monitor).
Из рисунка выше мы видим, что приложение Swiftfox (аналог Firefox) использует 68% CPU-ресурса. Применим Cpulimit для того чтобы ограничить его, к примеру, до 20%. Для этого введем в терминале следующую команду:
sudo cpulimit -p 6517 -l 20
Теперь использование CPU упало ниже 20% и никогда не превысит это значение.
Расширение возможностей Cpulimit — автоматизация ограничения.
Приложение Cpulimit полезно когда вы сталкиваетесь с программами, которые сразу начинают потреблять много CPU-ресурсов, а вам необходимо постоянно следить за загруженностью вашего процессора. Кроме того, вы можете также настроить его для мониторинга любого приложения в системе непрерывно. Эта возможность может пригодиться для сервера.
В этой статье вы сможете найти и скачать скрипты, которые автоматизируют мониторинг вашей системы и ограничат выбранные вами приложения с помощью черных/белых списков до заданного вами значения использования CPU.
Но перед началом необходимо убедиться, что у вас установлены пакеты cpulimit и gawk. Для этого наберите следующую команду в терминале:
sudo apt-get install cpulimit gawk
Ответьте на вопрос «у» для доустановки нужных пакетов.
Скачайте архив со скриптами, выложенный в конце этой статьи, и распакуйте их в ваш домашний каталог (/home/имя_юзера). Вы увидите два файла: cpulimit_daemon.sh and cpulimit.
Откройте файл cpulimit_daemon.sh в текстовом редакторе (gEdit) и изметите следующее:
- CPU_LIMIT — это максимальное значение CPU-ресурса, допустимое для каждого приложения. Значение по умолчанию: 20%.
- DAEMON_INTERVAL — это интервал времени, через который скрипт будет проверять систему. По умолчанию 3 секунды.
- BLACK_PROCESS_LIST — этот список содержит приложения, которые нужно контролировать. Необходимо использовать символ “|” для добавления сразу нескольких программ. Для примера: “ mysql|firefox|gedit “.
- WHITE_PROCESSES_LIST— этот список содержит приложения, которые НЕ нужно контролировать. Необходимо использовать символ “|” для добавления сразу нескольких программ. Для примера: “ mysql|firefox|gedit “.
Примечание: один из этих двух списков BLACK_PROCESS_LIST или WHITE_PROCESSES_LIST должен быть обязательно пуст, так как вы не можете иметь оба списка одновременно.
Установка.
Скопируйте файл cpulimit_daemon.sh в директорию /usr/bin/, для этого в терминале:
/cpulimit/cpulimit_daemon.sh /usr/bin
sudo chmod 700 /usr/bin/cpulimit_daemon.sh
Скопируйте файл cpulimit в директорию /etc/init.d/, установите необходимые права и сделайте запуск при загрузке:
/cpulimit/cpulimit /etc/init.d/
sudo chown root:root /etc/init.d/cpulimit
sudo chmod +x /etc/init.d/cpulimit
sudo update-rc.d cpulimit defaults
Теперь перезагрузите вашу систему и cpulimit запуститься автоматически.
Чтобы проверить работает ли cpulimit, необходимо набрать в терминале:
sudo service cpulimit status
Если приложение не запущено, то запустить/остановить его можно соответственно следующими командами:
sudo service cpulimit start
sudo service cpulimit stop
Удаление.
Для полного удаления cpulimit из вашей системы необходимо выполнить следующее.
1. Остановить процесс cpulimit:
sudo service cpulimit stop
2. Удалить процесс из автозапуска:
sudo update-rc.d -f cpulimit remove
3. Удалить сам файл запуска:
sudo rm /etc/init.d/cpulimit
4. Удалить даемон cpulimit:
sudo rm /usr/bin/cpulimit_daemon.sh
5. Удалить саму программу cpulimit:
sudo apt-get remove cpulimit
А также, если была установлена программа gawk:
sudo apt-get remove gawk
Вот и вся полезная информация об полезной программе Сpulimit.
Скачать архив со скриптами можно по следующей ссылке:
Также рекомендую прочитать:
13 Комментариев
Спасибо! Очень вовремя нашел вашу статью.
Пожалуйста, для этого этот сайт и создан.
На Fedora 13 не получается:
bash-4.1# yum install cpulimit
Подготовка к установке
Пакет cpulimit недоступен.
Ошибка: Выполнять нечего
Попробую скачать по ссылке в новости!
Да, на моем сайте вы сможете скачать программу cpulimit только в deb пакете. Попробуйте поискать cpulimit.rpm. Если такого пакета нет, то возможно попробовать собрать его с исходников.
Помогите пожалуйста сделать все что указано тут
под Fedora 13, через удаленное управление сервером (SSH)
т.е. без запуска приложения локально и управления конфигурацией мышкой т.к сам я не смогу пересобрать с исходников.
а также в «top» консоли не отображает id процесса, но есть определенное имя процесса, которое нужно сбрасывать при пиковой нагрузке.
к примеру вывод TOP
PID USER PR NI RES S VIRT SHR %CPU %MEM TIME+ COMMAND
6696 root -3 0 144m S 326m 23m 20.3 3.6 6:11.62 srcds_linux
сейчас «srcds_linux» потребляет CPU 20%, но очень часто этот показатель доходит до 100% и система виснет, нужно только этот процесс ограничить в 65%, либо при поднятии его до 95% делать
killall srcds_linux
Пока сделал необходимо для меня таким образом:
1) скачал и распаковал файлы
2) создал папку cpulimit
3) через фтп закинул файлы
4) через консоль (putty) зашел в папку с файлами и написал make
5) после этого пишу ./cpulimit -P /home/путь_к_файлу/srcds_run -l 80
теперь даже после сброса этого процесса cpulimit сам автоматом возьмет ID процесса по названию и снова применит к нему свои ограничения.
но т.к. необходимо было сделать это все в фоновом режиме установил и запустил screen
пишу screen
в тут уже запускаю свою строку:
./cpulimit -P /home/путь_к_файлу/srcds_run -l 80
после этого жму CTRL+A, d
выхожу из скрина и покидаю сервер:)
Но что бы не мучатся со screen необходимо выполнить как сказано тут, а пока вот такой альтернативный вариант для Fedora 13
Выражаю большую благодарность автору за скрипты! На UbuntuServer 10.04.4 LTS всё заработало с первого раза! Кроме того, наблюдается равномерное перераспределение нагрузки ресурсоёмких процессов из «BLACK_PROCESS_LIST» на все 4 ядра ЦП.
Спасибо,п***** с**** у меня после вашего демона ни один процеес не убивается и сервер не выключается
shutdown -r now не работает и все процессы жрут 0% cpu,т.е. не работает
Попробуйте убрать скрипт с автозагрузки. Если это невозможно сделать из своей системы, то можно воспользоваться любым Linux Live-CD.
Спасибо! Буду терзать и дерзать.
На многопроцессорных системах, процент нужно указывать с учетом числа CPU, т.е. для 4 процессорной машины для указания работы без ограничений нужно поставить не 100%, а 400%.
Оставить комментарий Отменить ответ
- Как удалить все стандартные сторонние приложения из Windows 8 (Windows RT)
(10,00 из 10)
- Как уменьшить уровень почти полной разрядки батареи до 1% в настройках Windows 7
(10,00 из 10)
- Список новых функций в Windows 8.1
(10,00 из 10)
- Как восстановить потерянные лицензионные ключи Windows и программ с нерабочего компьютера
(10,00 из 10)
- Удобный плагин для навигации по файлам и папкам в Notepad++
(10,00 из 10)
- Создание ярлыка и горячих клавиш для отключения монитора
(10,00 из 10)
- Сравнение программ для восстановления информации
(10,00 из 10)
- Как ограничить количество попыток ввода пароля при входе в Windows
(10,00 из 10)
- Как удалить системный файл в Windows 7 или Vista
(10,00 из 10)
- Как просматривать интернет страницы с помощью терминала Linux
(10,00 из 10)
Источник