2011/9/8 Mikhail Ramendik <[email protected]>: >>> А требуется 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

