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

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: