URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 56289
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Простой способ ограничения утилизац..."

Отправлено auto_tips , 26-Июн-09 19:30 
В репозиториях популярных Linux дистрибутивов можно найти полезную утилиту cpulimit (http://cpulimit.sourceforge.net/),
которая позволяет легко ограничить занимаемые определенной программой процессорные ресурсы.
Метод работы программы оригинален, в зависимости от указанного процента допустимой нагрузки,
процесс периодически останавливается через отправку сигнала SIGSTOP, а затем работа возобновляется через SIGCONT.

Например, ограничиваем потребление CPU для работающей программы find в 30%.
Определяем идентификатор процесса:

   $ ps -aux|grep find
   user 3470  7.0  7.9 25516 16252 ?       Sl   17:05  14:19 /usr/bin/find

Ограничиваем:

   $ cpulimit --pid 3470 --limit 30

На многопроцессорных системах, процент нужно указывать с учетом числа CPU, т.е. для 4 процессорной машины для
указания работы без ограничений нужно поставить не 100%, а 400%.


URL:
Обсуждается: https://www.opennet.ru/tips/info/2105.shtml


Содержание

Сообщения в этом обсуждении
"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено Аноним , 26-Июн-09 19:30 
А при запуске программы можно сразу эту утилизацию ограничить?

"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено cvsup , 26-Июн-09 21:01 
Не работает оно как надо. Собирается, запускается, но правильно не работает.

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено cvsup , 27-Июн-09 00:27 
P.S.
запускалось под фрей.. нерабочесть заключается в том, что при -l <NUM> реальная планка ограничения сильно ниже, так -l 40 дает %CPU ~5%

"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено аноним , 26-Июн-09 22:10 
У меня работает. Правда если запускать с ключом --pid (напрмиер firefox) то у меня выдало segmentation fault... ф если с ключом -е  firefox-bin -l 20 то работает, top потверждает

"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено Аноним , 27-Июн-09 00:22 
а она сама себя ограничивать умеет? ;)

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено pavlinux , 28-Июн-09 14:35 
cpulimit --pid `ls /proc/self/task/` --limit 1



"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено backslash , 30-Июн-09 14:12 
>cpulimit --pid `ls /proc/self/task/` --limit 1

И чей это PID будет? Shell'а? ;)


"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено John Lepikhin , 27-Июн-09 04:16 
Ага, писал аналогичную фигню для хостинга, лимитирует по тому же принципу. Только висит демоном и сама вычисляет зажравшиеся процессы.

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


"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено morten , 27-Июн-09 19:23 
Фантастика! Работает идеально в Ubuntu 9.04... Спасибо за полезную инфу!

"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено pavlinux , 28-Июн-09 19:42 
pavel@amd64:~> cpulimit 30 firefox
LoadPlugin: failed to initialize shared library /usr/lib/Adobe/Reader8/Browser/intellinux/nppdf.so [/usr/lib/Adobe/Reader8/Browser/intellinux/nppdf.so: неправильный класс ELF: ELFCLASS32]
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsdsp.so.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsc.so.0' from LD_PRELOAD cannot be preloaded: ignored.
*** NSPlugin Viewer  *** ERROR: /usr/lib/mozilla/plugins/npPicasa3.so: cannot open shared object file: No such file or directory
LoadPlugin: failed to initialize shared library /usr/lib/jdk1.6.0_07/jre/plugin/i386/ns7/libjavaplugin_oji.so [/usr/lib/jdk1.6.0_07/jre/plugin/i386/ns7/libjavaplugin_oji.so: неправильный класс ELF: ELFCLASS32]
LoadPlugin: failed to initialize shared library /usr/lib64/firefox/plugins/nppdf.so [/usr/lib64/firefox/plugins/nppdf.so: неправильный класс ELF: ELFCLASS32]
LoadPlugin: failed to initialize shared library /usr/lib/jdk1.6.0_07/jre/plugin/i386/ns7/libjavaplugin_oji.so [/usr/lib/jdk1.6.0_07/jre/plugin/i386/ns7/libjavaplugin_oji.so: неправильный класс ELF: ELFCLASS32]
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsdsp.so.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsc.so.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/lib/libmalloc.so.1' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsdsp.so.0' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/opt/kde3/$LIB/libartsc.so.0' from LD_PRELOAD cannot be preloaded: ignored.
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8

(npviewer.bin:9972): Gtk-WARNING **: Загружаемый модуль тем не найден в module_path: "qtcurve",
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
Flash Player: Warning: environment variable G_FILENAME_ENCODING is set and is not UTF-8
/usr/bin/firefox: line 123:  9903 Превышен лимит процессорного времени                                             $MOZ_PROGRAM "$@"


Ну ELFCLASS32 понятно, а нах... отваливаться после 30 сек.


"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено JLarky , 29-Июн-09 18:08 
>pavel@amd64:~> cpulimit 30 firefox

Usage: cpulimit TARGET [OPTIONS...]
   TARGET must be exactly one of these:
      -p, --pid=N        pid of the process
      -e, --exe=FILE     name of the executable program file
      -P, --path=PATH    absolute path name of the executable program file
   OPTIONS
      -l, --limit=N      percentage of cpu allowed from 0 to 100 (mandatory)
      -v, --verbose      show control statistics
      -z, --lazy         exit if there is no suitable target process, or if it dies
      -h, --help         display this help and exit

>Ну ELFCLASS32 понятно, а нах... отваливаться после 30 сек.

уж очень на ulimit похоже...

пилите, Шура


"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено svn , 29-Июн-09 11:39 
Что только не учудят лишь бы не пользоваться приоритетами ))

Страшно неоптимальное решение.


"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено cvsup , 29-Июн-09 13:19 
Согласен.

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено JLarky , 29-Июн-09 18:05 
Зато работает идеально. Нужно было как-то сервак WoW держать, так какой приоритет не ставь всё равно будет жрать всё что видит.
Не забываем что процессор загруженный на 50% это лучше чем на 100% (охлаждение, энергопотребление и т.д.) особенно когда прога жрёт то что ей жрать вроде и не обязательно

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено Аноним , 29-Июн-09 19:09 
Даааа, пользователи WoW будут плакать от счастья в те моменты, когда сервак будет "притормаживаться" через SIGSTOP

Такой маразматический способ ограничения ресурсов только для неинтерактивных интенсивных задач типа find или там считалок чего-нибудь подходит. Запускать под ним сервер, с которым идет интерактивная работа - даже слов нет, чтобы описать такое.


"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено BitBoy , 29-Июн-09 19:19 
Для backup, например, самое оно. Спасибо за заметку!

"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено Mike , 29-Июн-09 21:04 
cgroup уже не модно?

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено pavlinux , 29-Июн-09 22:04 
>cgroup уже не модно?

Примеры в студию


"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено Василий Убунтиец , 30-Июн-09 08:55 
в никсах можно создать пользователя которому ограничить CPU limit + если нужно MEM limit и запускать проекты типа WoW от имени такого пользователя
тоже красивый выход - имхо

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено Аноним , 30-Июн-09 09:11 
>в никсах можно создать пользователя которому ограничить CPU limit + если нужно
>MEM limit и запускать проекты типа WoW от имени такого пользователя

Квота на CPU в Unix подразумевает ограничение общего суммарного процессороного времени, а не приоритета перед другими процессами. Т.е. вы запретите процессу использовать больше N секунд процессорного времени в сумме, не более.


"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено XoRe , 30-Июн-09 11:00 
>>в никсах можно создать пользователя которому ограничить CPU limit + если нужно
>>MEM limit и запускать проекты типа WoW от имени такого пользователя
>
>Квота на CPU в Unix подразумевает ограничение общего суммарного процессороного времени, а
>не приоритета перед другими процессами. Т.е. вы запретите процессу использовать больше
>N секунд процессорного времени в сумме, не более.

Так и текст в новости не про приоритеты.
Вообще да, интересно, как себя будет вести сервер в указанных ограничителях)


"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено Аноним , 30-Июн-09 11:14 
>Так и текст в новости не про приоритеты.
>Вообще да, интересно, как себя будет вести сервер в указанных ограничителях)

В случае с cpulimit процесс просто будет меньше нагружать CPU давая работать другим, а в случае cpu quota (ulimit -t) будет ограничено общее время использования CPU,  т.е. процес будет продолжать съедать все ресурсы, но вырубится после того как квота будет исчерпана.


"Простой способ ограничения утилизации CPU для заданного процесса"
Отправлено Одмин , 01-Июл-09 13:51 
Ребята, откройте для себя Documentation/cgroups и всё сделаете без всяких костылей.

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено sHaggY_caT , 28-Янв-10 16:03 
В RHEL cgroups пока еще нет

"Простой способ ограничения утилизации CPU для заданного проц..."
Отправлено Сергей_Светайло , 22-Июл-10 00:46 
Это вариант!
-    но есть такой вопрос - который - как новичку - казался элементарным!
-    Но, оказалась – НЕ РАЗЗРЕШИМОЙ ПРОБЛЕМОЙ – ибо – на диске более200 ГБ!
Ситуация СЛЕДУЮЩАЯ:
При приобретении ACER  ASPIRE 5732Z - установили и приложили установочный DVD - на "Росинка" LM8, с ядром  - 2.6.31-14 generic, приобретена и WebCam logitech C250 и радио модем HUAWEI EC325.

Обещали методическую помощь для установки купленных устройств.
Получить обещанной помощи - не удалось.

Сам установил WebCam под Cheese – добавив недостающие пакеты.
При попытке подключить радио модем - прервалась проводная связь с Интернетом - которая работала из коробки.
Как использовать установочный диск DVD - для установки пакетов ПО, когда убрал лишние - для радио модема - видимо затронул базовые.
Полагаю – должна бать возможность – установочный DVD по умолчанию – как депозиторий.
Ибо и иконка регулятора звука пропала.
А при запуске с установочного диска - ВСЁ ИМЕЕТСЯ - КАК ВЕРНУТЬ ПОТЕРИ?
ВСЕМ ЗАРАНЕЕ ПРИЗНАТЕЛЕН!!!

Сергей