The OpenNET Project / Index page

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



"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"  +1 +/
Сообщение от auto_tips (?), 21-Июн-21, 08:32 
Скрипт для запуска процесса в Linux с минимальным влиянием на работу других процессов:

   #!/bin/sh
   # куда бы еще /usr/bin/nice впихнуть?
   /usr/bin/chrt --idle 0 /usr/bin/ionice -c 3 $* &
   XPID=$!
   /usr/bin/cpulimit -l 1 -c 1 -b -p $XPID
   wait $XPID

В chrt "--idle 0" выставляет режим планировщика SCHED_IDLE с минимальным приоритетом.

В ionice  "-c 3" активирует 3 класс (idle) планирования ввода/вывода.

В cpulimit опцией "-l" задаётся допустимый процент использования CPU (в диапазоне от 0 до 100 * на число процессорных ядер), - "-c" ограничивает число ядер CPU, "-b" - запускает процесс cpulimit в фоне, "-p" применяет ограничение для PID уже запущенного процесса. При помощи опции "-i" можно распространить ограничение и на все дочерние процессы.


URL:
Обсуждается: http://www.opennet.me/tips/info/3187.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от s (?), 21-Июн-21, 08:32   +1 +/
> # куда бы еще /usr/bin/nice впихнуть?

Дык man renice же!

Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от СеменСеменыч777 (?), 21-Июн-21, 14:20   +/
поспешишь - людей насмешишь. вот что стоило мне подождать пару дней.
сейчас у меня есть 1строчник:

/usr/bin/cpulimit -l 1 -c 1 -f -q -- /usr/bin/nice -19 /usr/bin/chrt --idle 0 /usr/bin/ionice -c 3 $*

Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от Аноним (4), 21-Июн-21, 19:01   +2 +/
Не $*, а "$@". Иначе проблемы с аргументами, содержащими пробелы.
Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от йо ж (?), 24-Июн-21, 21:04   +/
> совсем-совсем

"и таки запомните, дети, шо этот русский язык имеет трёх степеней сравнения: близко, ближе, и уот-уот-уот". (ц)

Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Аноним (6), 25-Июн-21, 17:21   +/
Самое интересное, что это не поможет. Если IO выставить в SCHED_BATCH, будет разве что быстрее отрабатывать без нагрузки и чуть меньше мешать с ней (лагать всё-равно будет). Всё хочу попробовать ограничить ресурсы через cgroups, но ядро даёт мне отлуп и не хочет без systemd работать, я не знаю что дальше с ним делать. Реалтайм процессы ещё и фризов завозят (всем), к одному ядру прибывать есть смысл только однопоточное приложение с вычислениями на всё это ядро (или с повышенными требованиями к стабильности задержек (т.н. реалтайм)). Реалтайм и нагруженная система понятия несовместимые.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #15

7. Сообщение от Oe (?), 28-Июн-21, 13:17   +/
cpulimit такая же бесполезная утилита, как и BES на винде - просто ставит на паузу приложение на сотни миллисекунд, вместо эмуляции пропуска тактов процессора, как это должно быть реализовано по нормальному. Еще не ясно, синхронизированы ли периоды пауз, т.е. размазываются ли приложения по времени, или одновременно все ставятся на паузу, и одновременно возобновляются - если нет то это катастрофа для системы, когда вся система замирает каждые пол секунды, я уж не говорю про стабильность работы приложений, особенно tcp сессий.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

8. Сообщение от СеменСеменыч777 (?), 28-Июн-21, 21:45   +/
> попробовать ограничить ресурсы через cgroups

наверняка кто-то это уже делал. осталось найти и адаптировать.

> но ядро даёт мне отлуп и не хочет без systemd работать,

???

> к одному ядру прибывать есть смысл только однопоточное приложение

все очень просто. меньше одного ядра выделить невозможно.

ps: "реалтайм" не интересует.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

9. Сообщение от СеменСеменыч777 (?), 28-Июн-21, 21:54   +/
> BES на винде

я не знаю что это. на винде есть "start /low", на FreeBSD есть idprio и опять же nice.

> Еще не ясно,
> синхронизированы ли периоды пауз, т.е. размазываются ли приложения по времени, или
> одновременно все ставятся на паузу,

man cpulimit
мониторится конкретный PID (где "P" - это не "приложение", а кое-что другое).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

10. Сообщение от Stax (ok), 29-Июн-21, 16:04   +/
Ну да, использовать ionice в 2021 году, когда у всех deadline/mq-deadline/none шедулеры, которым на него глубоко до лампочки, ага.

Он работал только с cfq, который актуален только для вращающихся HDD на серверах. Потому что на SSD всегда лучше передавать ему запросы сразу, чем морозить их в очередях, а на десктопе cfq с его стремлением повысить IOPS в ущерб задержкам ощущается не очень комфортно.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11

11. Сообщение от СеменСеменыч777 (?), 29-Июн-21, 18:07   +/
окей, ionice вычеркиваем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #13

12. Сообщение от Аноним (12), 30-Июн-21, 23:14   +1 +/
> cpulimit -l 1 -c 1 -b -p

После этого всё лишнее.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14

13. Сообщение от проходил (?), 10-Июл-21, 22:12   +/
можно ещё вычеркнуть nice, он работает только с SCHED_OTHER. В SCHED_BATCH и SCHED_IDLE приоритет всегда 0.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #17, #23

14. Сообщение от СеменСеменыч777 (?), 11-Июл-21, 10:48   +/
>> cpulimit -l 1 -c 1 -b -p
> После этого всё лишнее.

за время этого 1% злой процесс сможет конкретно нагрузить I/O. или наплодить форков.
так что пусть будет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

15. Сообщение от Алеша (?), 22-Июл-21, 02:29   +/
> Всё хочу попробовать ограничить ресурсы через cgroups, но ядро даёт мне отлуп

ну так и используй cpulimit - он сделает ровно все то же самое, что ты хочешь попробовать руками через cgroups сделать.
про отлупы и тем более systemd не понятно. в ядре есдть документация и там совершенно ясные примеры, по которым никто никаких отлупов не дает, если конечно все делать (и понимать) правильно...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #16

16. Сообщение от Аноним (6), 22-Июл-21, 09:05   +/
Прав нет (мне не интересно запускать от рута), адекватной документации нет (не говоря про версии, с актуальностью проблемы), при чём тут процессор (ни при чём)?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

17. Сообщение от Stax (ok), 27-Июл-21, 15:00   +/
Тоже правда.
В общем, добавили всякой мути побольше для устрашения, про кторую сам автор не понимает, что она делает, типа скомбинировано из каких-то древних howto'шек без осознания, как оно сочетается :) И выдается за истину. Мда....
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #21

20. Сообщение от pashev.me (?), 02-Авг-21, 12:15   +2 +/
Не запускать совсем-совсем?
Ответить | Правка | Наверх | Cообщить модератору

21. Сообщение от XXX (??), 03-Авг-21, 00:04   +1 +/
Ну дык, поделитесь и вам спасибо скажут
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

22. Сообщение от Sylvia (ok), 12-Авг-21, 22:41   +1 +/
schedtool -D -n+20 -e XXX

Ответить | Правка | Наверх | Cообщить модератору

23. Сообщение от pavlinux (ok), 07-Сен-21, 14:10   +1 +/
1. SCHED_IDLE врубает класс IOPRIO_CLASS_IDLE, которые юзают и BFQ и MQ,
   эта отлично работает на ext4 и btrfs.
   Если не указано IDLE, то используется best-effort i/o scheduling.

2. Не нулевой "приоритет" бывает только у SCHED_FIFO и SCHED_RR

3. Это не системный приоритет, а среди равных шыдулеров!
   SCHED_RR = 99 полюбасу ниже, чем SCHED_FIFO = 1

4. В среднем SCHED_OTHER, SCHED_BATCH и SCHED_IDLE работают так как описано.
   Автор не слушай этих чайников.


Для выеб...нов, пусть доказывают, что большинство Linux систем работает так как они мечтают.

А по-дефолту везде CFQ/ext4

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

24. Сообщение от pavlinux (ok), 07-Сен-21, 14:40   +/
> Скрипт для запуска процесса в Linux с минимальным влиянием на работу других процессов:


while true
   do
      sleep 31415;
      exec myprogramma;
      sleep 1;
      killall -9 `pidof myprogramma`;
done

    

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27

25. Сообщение от Michael Shigorinemail (ok), 08-Окт-21, 21:19   +/
> Скрипт для запуска процесса в Linux с минимальным влиянием на работу других
> процессов:

Вспомнилось: http://packages.altlinux.org/idlewrap

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26

26. Сообщение от jack_erohin (?), 19-Окт-21, 15:02   +/
Михаил, а почему вы не дали прямую ссылку на текст скрипта ?
вместо "просто посмотреть" пришлось глюкать по вашему репозиторию,
скачивать srpm, ставить приблуду для распаковки rpm и только после этого
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

27. Сообщение от OpenEcho (?), 23-Июн-22, 23:54   +/
> while true
>   do
>      sleep 31415;
>      exec myprogramma;
>      sleep 1;
>      killall -9 'pidof myprogramma';
>done

Смешно :)

Только вот после

> exec myprogramma;

myprogramma вырвется на свободу и попытка убийства обломится ;)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #28

28. Сообщение от pavlinux (ok), 24-Июн-22, 14:10   +/
> myprogramma вырвется на свободу и попытка убийства обломится ;)

ОМГ :facepalm:


exec myprogramma &

Содержимое myprogramma нужно уточнять?
А то ж вы придумаете что там есть  kill -9 `pidof bash`
и опять ничего не получится?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #29

29. Сообщение от OpenEcho (?), 25-Июн-22, 14:52   +/
>> myprogramma вырвется на свободу и попытка убийства обломится ;)
> ОМГ :facepalm:
>
 
> exec myprogramma &
>

> Содержимое myprogramma нужно уточнять?
> А то ж вы придумаете что там есть  kill -9 `pidof
> bash`
> и опять ничего не получится?

Теперь похоже на смысл, только "exec" вообще не нужен

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

30. Сообщение от ivan_erohin (?), 05-Мрт-23, 08:39   +/
я нашел доп.применение этому глюкалу: копирование .iso на флэшки.
привет секте свидетелей 12309.
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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