Видео смотреть бесплатно

Смотреть русское видео

Официальный сайт mixzona 24/7/365

Смотреть видео бесплатно

Geidrow 27.09.2011 18:53

Есть вопрос!Скрипты для изменения приоритета

Доброго времени суток!
Подскажите, пожалуйста, как должен выглядеть скрипт, если нужно запускать приложение с пониженным (на 4) приоритетом у планировщика процессорного времени и пониженным приоритетом у планировщика ввода-вывода.
Сложность (для меня) в том, что если просто дать или команду ionice, или nice, то все ок, но если нужно для одного и того же процесса применить обе, то необходимо неизвестной мне командой получить pid созданного процесса, а затем применить к нему renice. А может как-то иначе.
Вот этот пример не работает, т.е. htop показывает обычный приоритет
#!/bin/sh
ionice -c 3 firefox
renice -n 32 firefox
Спасибо


Тэги:
+ 1 -
Похожие Поделиться

cooler 27.09.2011 19:32 #
+ 0 -
1
2
3
4
5
6
for i in   `ps waxu | grep firefox | grep -v grep | awk {'print $2'}`; 
do
ionice -c 3 -p $i &&
sleep 1 &&
renice -n 20 -p $i;
done


Заметьте, что приоритеты находятся в диапазоне от -20 (наибольший приоритет) до 19
mironov_orig 27.09.2011 20:57 #
+ 2 -
1
`ps waxu | grep firefox | grep -v grep | awk {'print $2'}`

вот эту дичайшую дичь можно заменить элементарным pgrep firefox. Что будет лакониченей и точнее.
cooler 27.09.2011 22:36 #
+ -1 -
вот эту дичайшую дичь писал спецом, чтоб было понятно пошагово что делается, ибо бывало очень много прецедентов, когда народ не понимал что происходит.
Aesdana 27.09.2011 22:47 #
+ 0 -
Это проблемы народа, котрым лень сказать man pgrep
cooler 27.09.2011 22:59 #
+ 0 -
Это проблема народа, которым лень прочитать man pgrep
mironov_orig 27.09.2011 23:04 #
+ 0 -
Либо глюк, либо палево.
Geidrow 27.09.2011 20:32 #
+ 0 -
Спасибо!
Давно уже собирался все часто используемые приложения запускать с определёнными приоритетами, но написание скриптов вызывает затруднения. Теперь же возможности Линукса будут реализованы в большей степени, чем раньше :)
Geidrow 27.09.2011 20:41 #
+ 0 -
почему он может не работать?
mealsforall 27.09.2011 21:05 #
+ 1 -
$! даёт PID предыдущего запущенного процесса.
Попробуй
nice -n 32 firefox
ionice -c 3 -p $!
thebeetlebum 27.09.2011 21:58 #
+ 0 -
Если мне не изменяет память, то приоритеты можно выдавать в диапазоне [-20;20]. Что такое 32 оно не поймет
mealsforall 27.09.2011 22:45 #
+ 0 -
Это я просто скопипейстил у ТС %)
Тут главное $!
cooler 28.09.2011 13:25 #
+ 1 -
Предыдущий запущенный процесс будет nice в этом случае.. И если процесс уже был terminated то значение будет пустое.
Geidrow 28.09.2011 15:46 #
+ 0 -
так почему-то тоже не запускает.

#!/bin/sh
for i in `pgrep firefox`;
do
ionice -c 3 -p $i &&
sleep 5 &&
renice -n 20 -p $i;
done
mironov_orig 28.09.2011 19:02 #
+ 0 -
Этот "скрипт" не для запуска, а для изменения приоритета уже запущенного фф.
Geidrow 28.09.2011 20:42 #
+ 0 -
а как добавить возможность вначале запустить, затем изменить приоритет?
такой вариант запускает, но не меняет приоритет:
#!/bin/sh
firefox
for i in `pgrep firefox`;
do
ionice -c 3 -p $i &&
sleep 1 &&
renice -n 20 -p $i;
done
mironov_orig 28.09.2011 21:05 #
+ 0 -
Ну тогда уж
1
2
3
4
5
6
7
8
#!/bin/sh
pids=$(pgrep firefox)
if [ -z "$pids" ]; then
firefox &
pids="$!"
sleep 10
fi
ionice -c 3 -p "$pids" && sleep 1 && renice -n 2- -p "$pids"

shisoid 01.10.2011 02:01 #
+ 0 -
>ionice -c 3 -p "$pids" && sleep 1 && renice -n 2- -p "$pids"
вообще-то renice таки затрагивает приоритет и для IO
потому логичней поменять команды местами, не?
второе - зачем ренайсить, если можно сразу запустить с нужными приоритетами, раз уж решил запускать из скрипта?
mealsforall 28.09.2011 21:06 #
+ 0 -
Скрипт же наверное остановится после запуска firefox, ожидая его завершения?

1
2
3
4
#!/bin/sh
firefox &
sleep 1s
....

ananas 29.09.2011 08:26 #
+ 1 -
господа, с умным видом дающие советы, вы бы хоть поинтересовались, как файрфок запускается, а потом уже советовали.

firefox - обычный шеловский враппер, который запускает firefox-bin, предварительно настраивая ему окружение. и ловить его по $! - глупство. ловить надо firefox-bin, и ему и выставлять приоритеты.
mealsforall 29.09.2011 14:03 #
+ 1 -
Во-первых, ТС спрашивал принцип, а не конкретно файрфокс. Во-вторых, nice наследуется порождаемыми процессами. Проверь результат firefox & renice 4 -p $!
ananas 29.09.2011 14:40 #
+ -2 -
варвар, во первых, в твоей мрачной конструкции возможна гонка, а во-вторых - сей костыль спокойно заменяется nice -n 4 firefox. а вот что делать с последующим ionice, который тс-у тоже нужен? к моменту его запуска $! может уже вообще не существовать.
mealsforall 29.09.2011 18:03 #
+ 1 -
Минуснул за невежливое отношение к собеседнику.

Предыдущее сообщение адресовало не вопрос ТС, а исключительно два твоих аргумента: 1. что firefox все равно получит сниженный приоритет, 2. что ловить его по $! вполне уместно. Как запустить и nice, и ionice, я ответил выше топикстартеру.
ananas 29.09.2011 14:40 #
+ 0 -
варвар, во первых, в твоей мрачной конструкции возможна гонка, а во-вторых - сей костыль спокойно заменяется nice -n 4 firefox. а вот что делать с последующим ionice, который тс-у тоже нужен? к моменту его запуска $! может уже вообще не существовать.
Geidrow 29.09.2011 15:38 #
+ 0 -
просьбой
к моменту его запуска $! может уже вообще не существовать.


к сожалению, renice не срабатывает.
Geidrow 29.09.2011 15:42 #
+ 0 -
просьбой
shisoid 01.10.2011 01:59 #
+ 0 -
pgrep
pidof
привет cooler :3
kstep 01.10.2011 02:47 #
+ 1 -
Ребят, а что вам мешает сделать
nice -n 20 ionice -c 3 firefox
а?
kstep 01.10.2011 02:49 #
+ 2 -
Только что проверил, всё прекрасно работает. Не дурите себе голову.
kstep 01.10.2011 02:56 #
+ 2 -
Чтоб в фоне запустить, само собой надо с амперсандом:
nice -n 20 ionice -c 3 firefox &

И вообще, матчасть у народа хромает. То, что новый процесс, запущенный через пару fork(); exec*(); получает приоритет родительского процесса, многие не подозревают, а между тем именно на этом принципе работают nice и ionice. Для них распишу: nice меняет свой приоритет на 20 и запускает ionice, ionice получает приоритет 20 от родителя, ставит себе низший приоритет ввода-вывода и запускает firefox, в итоге новый отфоркованный процесс получает все приоритеты от родителя (ionice), а их мы знает.

Всё.
Geidrow 01.10.2011 07:05 #
+ 0 -
nice -n 20 ionice -c 3 firefox & -отличная идея!
Geidrow 01.10.2011 07:13 #
+ -1 -
Но здесь есть нюанс, который ограничивает применение скрипта: приоритет планировщика процессорного времени, будучи выставленным, например 4, уже не запускает firefox-bin с таким же приритетом, системный монитор показывает процесс ionice (со значком firefox'а и приоритетом 4), сам firefox имеет обычный приоритет процессорного времени, idle - у ionice.
kstep 01.10.2011 08:18 #
+ 1 -
ORLY?



ЧЯДНТ?
kstep 01.10.2011 08:28 #
+ 0 -
Ooops, слегка спалился. Вот так правильно:


Geidrow 01.10.2011 08:47 #
+ -1 -
похожу мой комментарий был неясным:
nice -n 20 ionice -c 3 firefox & работает
НО
nice -n 4 ionice -c 3 firefox &
1
приоритет планировщика процессорного времени, будучи выставленным, например 4, уже не запускает firefox-bin с таким же приритетом, системный монитор показывает процесс ionice (со значком firefox'а и приоритетом 4), сам firefox имеет обычный приоритет процессорного времени, idle - у ionice. 

kstep 01.10.2011 09:20 #
+ 1 -
У тебя какой-то найс неправильный. Только что попробовал nice -n 4 ionice -c 3 google-chrome, получил процесс с nice=4. С каким приоритетом у тебя шелл выполняется? Процесс может понижать свой найс (повышать приоритет) только если запущен с правами суперюзера.
Geidrow 01.10.2011 10:00 #
+ -1 -
то есть этот скрипт надо запускать через sudo?
kstep 03.10.2011 01:14 #
+ 0 -
Только если процесс, запускающий nice, у тебя с приоритетом ниже чем тот, который ты хочешь выставить.

Более того, у тебя не получится НИКАКИМ ОБРАЗОМ повысить приоритет процесса (через nice, renice, с любыми костылями из этого топика), если перед этим не получишь права суперюзера.
Geidrow 01.10.2011 11:04 #
+ -1 -
так это небезопасно
Geidrow 03.10.2011 18:06 #
+ 0 -
nice -n 4 вроде понижает приоритет
kstep 06.10.2011 04:37 #
+ 0 -
Чем меньше найс, тем выше приоритет. Процесс с найсом 4 имеет приоритет выше, чем процесс с найсом 10.

Nice value это то, насколько «учтиво» ведёт себя процесс по отношению к другим. То есть чем он выше, тем процесс «учтивее» и охотнее уступает процессорное время другим (приоритет ниже), чем он ниже, тем процесс «грубее», тем сильнее от «расталкивает» другие процессы в очереди к процессору (приоритет выше).

nice -n 4 увеличит приоритет процесса.
kstep 06.10.2011 04:39 #
+ 0 -
Точнее так, увеличит если если текущий приоритет процесса больше 4; уменьшит, если приоритет процесса меньше 4.
Geidrow 06.10.2011 09:19 #
+ 0 -
выдержка из мана
-n, --adjustment=N
add integer N to the niceness (default 10)
вот только по умолчанию приоритет у пользовательского приложения ноль. Поэтому понизит на 4.
не получится НИКАКИМ ОБРАЗОМ повысить приоритет... если перед этим не получишь права суперюзера

мне надо понизить.
Стратегия такова:
1) выявить приложения, которые обычно одновременно работают с мультимедиа приложениями;
2) чтобы не запускать скрипты (запускающие эти приложения с приоритетами отличными от принятых по умолчанию) от рута, понизить приоритет этих приложений, давая больше ресурсов мультимедиа приложениям.
И никак не могу добиться, чтобы скрипт запускал приложение, затем менял приритеты процессорного времени И ввода-вывода. Поскольку выполнение такого скрипта привязано к комбинации клавиш, как-то неудобно одной комбинацией запускать приложение, другой менять приоритет (в теме есть работоспособный скрипт для этой задачи).
kstep 06.10.2011 15:16 #
+ 0 -
Собственно к этому у меня и вопрос:
С каким приоритетом у тебя шелл выполняется?

Потому что nice может не работать в используемой форме (nice -n 4) только если у тебя приоритет процесса, запускающего найс, ниже, чем заданный найсом. Ты запускаешь как? Если из какого виндоу менеджера, то может он у тебя выполняется уже с пониженным приоритетом?
Geidrow 06.10.2011 16:06 #
+ 0 -
комбинацией клавиш, которая выполняет команду «konsole»
Geidrow 29.01.2012 08:34 #
+ 0 -
С каким приоритетом у тебя шелл выполняется?

С обычным: 20 для IO и 0 для cpu.

В хорошем качестве hd видео

Онлайн видео бесплатно