Re: Динамически включать-выключать CPU
2011/9/8 Mikhail Ramendik <mr@ramendik.ru>:
>>> А требуется mplayer на оба - один тред на одном, другой на другом.
>>> Иначе не хватает.
>>
>> Вы уверены, что он это вообще умеет? То есть ситуация, когда всё было в
>> порядке и он успевал -- наблюдалась, и там было два треда на разных CPU?
>
> Да, без isolcpus это именно так и работает.
А я нашёл инструменты, которые вроде бы делают то что надо.
Смысл в том, что нужно не делать isolcpus, а создать cpuset (это
всё-таки проще в употреблении, и в дебиановском ядре есть). И каким-то
образом запихнуть все процессы начиная с init в этот cpuset. Ну а
потом отправить mplayer в root cpuset.
man от идеального инструмента лежит вот тут:
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=man&fname=/usr/share/catman/man8/bootcpuset.8.html
К сожалению, это часть коммерческого SGI ProPack. А жаль.
Как я понял, тут несколько строк на Си, да только для этих нескольких
строк надо очень много. Например, как собрать результат так, чтобы он
действительно мог исполняться в качестве init, и какие системные
вызовы (ядерные?) можно при этом использовать. А также как получить
PID от init и успеть его запихнуть в /dev/cpuset/system_cpuset/tasks
_до_ того, как init спаунит другие процессы...
Заметно хуже, потому что не с самого начала, это похоже умеет вот
такая тулза http://code.google.com/p/cpuset/ .
В общем теперь буду действовать так:
- Подожду пару дней - действительно ли isolcpus=1 помогает от зависаний
- Если помогает, попробую гуглевскую утилиту
- Если утилита не решает вопрос - придётся пытаться реализовать bootcpuset.
--
Yours, Mikhail Ramendik
Unless explicitly stated, all opinions in my mail are my own and do
not reflect the views of any organization
Reply to: