[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: