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

Исходное сообщение
"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"

Отправлено 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


Содержание

Сообщения в этом обсуждении
"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено s , 21-Июн-21 08:32 
> # куда бы еще /usr/bin/nice впихнуть?

Дык man renice же!


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено СеменСеменыч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 $*


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Аноним , 21-Июн-21 19:01 
Не $*, а "$@". Иначе проблемы с аргументами, содержащими пробелы.

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено йо ж , 24-Июн-21 21:04 
> совсем-совсем

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Аноним , 25-Июн-21 17:21 
Самое интересное, что это не поможет. Если IO выставить в SCHED_BATCH, будет разве что быстрее отрабатывать без нагрузки и чуть меньше мешать с ней (лагать всё-равно будет). Всё хочу попробовать ограничить ресурсы через cgroups, но ядро даёт мне отлуп и не хочет без systemd работать, я не знаю что дальше с ним делать. Реалтайм процессы ещё и фризов завозят (всем), к одному ядру прибывать есть смысл только однопоточное приложение с вычислениями на всё это ядро (или с повышенными требованиями к стабильности задержек (т.н. реалтайм)). Реалтайм и нагруженная система понятия несовместимые.

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено СеменСеменыч777 , 28-Июн-21 21:45 
> попробовать ограничить ресурсы через cgroups

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

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

???

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

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

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Алеша , 22-Июл-21 02:29 
> Всё хочу попробовать ограничить ресурсы через cgroups, но ядро даёт мне отлуп

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Аноним , 22-Июл-21 09:05 
Прав нет (мне не интересно запускать от рута), адекватной документации нет (не говоря про версии, с актуальностью проблемы), при чём тут процессор (ни при чём)?

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Oe , 28-Июн-21 13:17 
cpulimit такая же бесполезная утилита, как и BES на винде - просто ставит на паузу приложение на сотни миллисекунд, вместо эмуляции пропуска тактов процессора, как это должно быть реализовано по нормальному. Еще не ясно, синхронизированы ли периоды пауз, т.е. размазываются ли приложения по времени, или одновременно все ставятся на паузу, и одновременно возобновляются - если нет то это катастрофа для системы, когда вся система замирает каждые пол секунды, я уж не говорю про стабильность работы приложений, особенно tcp сессий.

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено СеменСеменыч777 , 28-Июн-21 21:54 
> BES на винде

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

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

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Stax , 29-Июн-21 16:04 
Ну да, использовать ionice в 2021 году, когда у всех deadline/mq-deadline/none шедулеры, которым на него глубоко до лампочки, ага.

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено СеменСеменыч777 , 29-Июн-21 18:07 
окей, ionice вычеркиваем.

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено проходил , 10-Июл-21 22:12 
можно ещё вычеркнуть nice, он работает только с SCHED_OTHER. В SCHED_BATCH и SCHED_IDLE приоритет всегда 0.

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Stax , 27-Июл-21 15:00 
Тоже правда.
В общем, добавили всякой мути побольше для устрашения, про кторую сам автор не понимает, что она делает, типа скомбинировано из каких-то древних howto'шек без осознания, как оно сочетается :) И выдается за истину. Мда....

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено XXX , 03-Авг-21 00:04 
Ну дык, поделитесь и вам спасибо скажут

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено pavlinux , 07-Сен-21 14:10 
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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Аноним , 30-Июн-21 23:14 
> cpulimit -l 1 -c 1 -b -p

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено СеменСеменыч777 , 11-Июл-21 10:48 
>> cpulimit -l 1 -c 1 -b -p
> После этого всё лишнее.

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


"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено pashev.me , 02-Авг-21 12:15 
Не запускать совсем-совсем?

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Sylvia , 12-Авг-21 22:41 
schedtool -D -n+20 -e XXX


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено pavlinux , 07-Сен-21 14:40 
> Скрипт для запуска процесса в Linux с минимальным влиянием на работу других процессов:


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

    


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено OpenEcho , 23-Июн-22 23:54 
> while true
>   do
>      sleep 31415;
>      exec myprogramma;
>      sleep 1;
>      killall -9 'pidof myprogramma';
>done

Смешно :)

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

> exec myprogramma;

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


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено pavlinux , 24-Июн-22 14:10 
> myprogramma вырвется на свободу и попытка убийства обломится ;)

ОМГ :facepalm:


exec myprogramma &

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


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено OpenEcho , 25-Июн-22 14:52 
>> myprogramma вырвется на свободу и попытка убийства обломится ;)
> ОМГ :facepalm:
>
 
> exec myprogramma &
>

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

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


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено Michael Shigorin , 08-Окт-21 21:19 
> Скрипт для запуска процесса в Linux с минимальным влиянием на работу других
> процессов:

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


"Раздел полезных советов: Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено jack_erohin , 19-Окт-21 15:02 
Михаил, а почему вы не дали прямую ссылку на текст скрипта ?
вместо "просто посмотреть" пришлось глюкать по вашему репозиторию,
скачивать srpm, ставить приблуду для распаковки rpm и только после этого

"Запуск процесса с совсем-совсем IDLE приоритетом в Linux"
Отправлено ivan_erohin , 05-Мрт-23 08:39 
я нашел доп.применение этому глюкалу: копирование .iso на флэшки.
привет секте свидетелей 12309.