The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Простой способ ограничения утилизации CPU для заданного процесса
В репозиториях популярных 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%.
 
26.06.2009
Ключи: cpu, limit, linux / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 19:30, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А при запуске программы можно сразу эту утилизацию ограничить?
     
  • 1.2, cvsup (ok), 21:01, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Не работает оно как надо. Собирается, запускается, но правильно не работает.
     
     
  • 2.5, cvsup (ok), 00:27, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    P.S.
    запускалось под фрей.. нерабочесть заключается в том, что при -l <NUM> реальная планка ограничения сильно ниже, так -l 40 дает %CPU ~5%
     

  • 1.3, аноним (?), 22:10, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня работает. Правда если запускать с ключом --pid (напрмиер firefox) то у меня выдало segmentation fault... ф если с ключом -е  firefox-bin -l 20 то работает, top потверждает
     
  • 1.4, Аноним (-), 00:22, 27/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    а она сама себя ограничивать умеет? ;)
     
     
  • 2.9, pavlinux (ok), 14:35, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    cpulimit --pid 'ls /proc/self/task/' --limit 1


     
     
  • 3.24, backslash (?), 14:12, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >cpulimit --pid 'ls /proc/self/task/' --limit 1

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

     

  • 1.6, John Lepikhin (?), 04:16, 27/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ага, писал аналогичную фигню для хостинга, лимитирует по тому же принципу. Только висит демоном и сама вычисляет зажравшиеся процессы.

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

     
  • 1.7, morten (?), 19:23, 27/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фантастика! Работает идеально в Ubuntu 9.04... Спасибо за полезную инфу!
     
  • 1.11, pavlinux (ok), 19:42, 28/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    pavel amd64 cpulimit 30 firefox LoadPlugin failed to initialize shared libra... большой текст свёрнут, показать
     
     
  • 2.15, JLarky (?), 18:08, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >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 похоже...

    пилите, Шура

     

  • 1.12, svn (??), 11:39, 29/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что только не учудят лишь бы не пользоваться приоритетами ))

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

     
     
  • 2.13, cvsup (ok), 13:19, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен.
     
  • 2.14, JLarky (?), 18:05, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Зато работает идеально. Нужно было как-то сервак WoW держать, так какой приоритет не ставь всё равно будет жрать всё что видит.
    Не забываем что процессор загруженный на 50% это лучше чем на 100% (охлаждение, энергопотребление и т.д.) особенно когда прога жрёт то что ей жрать вроде и не обязательно
     
     
  • 3.16, Аноним (-), 19:09, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Даааа, пользователи WoW будут плакать от счастья в те моменты, когда сервак будет "притормаживаться" через SIGSTOP

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

     
     
  • 4.17, BitBoy (?), 19:19, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для backup, например, самое оно. Спасибо за заметку!
     

  • 1.18, Mike (??), 21:04, 29/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    cgroup уже не модно?
     
     
  • 2.19, pavlinux (ok), 22:04, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >cgroup уже не модно?

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

     

  • 1.20, Василий Убунтиец (?), 08:55, 30/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в никсах можно создать пользователя которому ограничить CPU limit + если нужно MEM limit и запускать проекты типа WoW от имени такого пользователя
    тоже красивый выход - имхо
     
     
  • 2.21, Аноним (-), 09:11, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >в никсах можно создать пользователя которому ограничить CPU limit + если нужно
    >MEM limit и запускать проекты типа WoW от имени такого пользователя

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

     
     
  • 3.22, XoRe (ok), 11:00, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>в никсах можно создать пользователя которому ограничить CPU limit + если нужно
    >>MEM limit и запускать проекты типа WoW от имени такого пользователя
    >
    >Квота на CPU в Unix подразумевает ограничение общего суммарного процессороного времени, а
    >не приоритета перед другими процессами. Т.е. вы запретите процессу использовать больше
    >N секунд процессорного времени в сумме, не более.

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

     
     
  • 4.23, Аноним (-), 11:14, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Так и текст в новости не про приоритеты.
    >Вообще да, интересно, как себя будет вести сервер в указанных ограничителях)

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

     

  • 1.25, Одмин (?), 13:51, 01/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ребята, откройте для себя Documentation/cgroups и всё сделаете без всяких костылей.
     
     
  • 2.26, sHaggY_caT (ok), 16:03, 28/01/2010 [^] [^^] [^^^] [ответить]  
  • +/
    В RHEL cgroups пока еще нет
     

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

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

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

    Сергей


     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру