Re: nice -n - только от рута?
Иван Лох wrote:
> On Sat, Sep 10, 2011 at 10:09:47PM +0100, Mikhail Ramendik wrote:
>>>> Ставить real-time scheduler для программы которая не была специально под такое
>>>> рассчитана -- хороший способ выстрелить себе в ногу.
>>> mplayer довольно часто так запускают. Наверное, чаще чем другие приложение
>>> (кроме, может быть, cdrecord). Это же мягкий реал-тайм.
Это "мягкий реал-тайм" с точки зрения требования по управлению шаттлом. И совсем
не мягкий с точки зрения других приложений и системы. Если real-time процесс
задумается внутри себя, все остальные не получат ни-че-го.
К примеру, что получится, когда mplayer начнёт драться с xserver? Ага, оно
самое. А если mplayer начнёт при этом дропать фреймы, и жрать чуть побольше CPU?
Не, если приложение не разрабатывалось с учётом требований real-time, и не
верифицированно, не проверенно на наличие всяческих deadlock и races, причём во
взаимодейтвии со всеми критичными для системы процессами (xserver&etc), ставить
его на real-time себе дороже.
>> Хорошо, попробуем. А это точно выдавит забытый в фоне какой-нибудь
>> flashplugin-nonfree etc?
>
> Гарантированно ограничит.
По выделению квантов CPU - да. И не только flashplugin-nonfree не пустит, но и
wm, xserver,...
А вот по диску/свопу/whatever - нет :-)
>> В man schedtool не понял одну вещь - как считается priority. Какой
>> процес получит больше времени - с priority 10 или 30?
>
> Real-time priorities range inclusively from one to MAX_RT_PRIO minus one. By default, MAX_RT_PRIO is 100—therefore, the
> default real-time priority range is one to 99. This priority space is shared with the nice values of SCHED_OTHER tasks;
> they use the space from MAX_RT_PRIO to (MAX_RT_PRIO + 40). By default, this means the –20 to +19 nice range maps
> directly onto the 100 to 140 priority range.
>
>> И ещё - передаётся ли это процессам-детям? То есть сработает ли такой
>> вариант: (это без наворотов для безопасности)
>>
>> sudo schedtool -R -p 20 $$
>> mplayer ....
>>
>> А то сам mplayer я точно не буду от рута пускать.
>
> Можно например так:
>
> nohup mplayer&
> sudo schedtool -R -p 20 $!
Race condition. За это время mplayer вполне может успеть отфоркать себе кэш или
наплодить нитей.
Вот потому-то написанное обычными программерами до real-time допускать нельзя :-)
Reply to: