Re: Динамически включать-выключать CPU
2011/9/9 Victor Wagner <vitus@wagner.pp.ru>:
>> На шелле то, что я хочу, пишется без проблем. Вот оно:
> Последняя строчка должна быть exec /sbin/init
> Чтобы процесс не форкался, а замещал шелл инитом.
Ага. И ещё потребовалось echo 0 >/dev/cpuset/syscpuset/mems . После
этого оно заработало. Но куча задач осталась неперекинутой, поскольку
запускаются помимо init (включая kswapd0, в котором у меня oops'ы
были).
Я обнаружил, что лишнее перекинуть просто нельзя - на некоторые задачи
echo $pid >/dev/cpuset/syscpuset/tasks даёт write error. Но поскольку
перекидывать надо по одной строке, я не смог сделать это на шелле.
Сейчас у меня работает такое решение:
в ядре init=/sbin/cpuset-hack
файл /sbin/cpuset-hack , permissions 744 чтобы случайно не запустить:
#!/bin/sh
/bin/mkdir /dev/cpuset
/bin/mount -t cpuset - /dev/cpuset
/bin/mkdir /dev/cpuset/syscpuset
echo 0 >/dev/cpuset/syscpuset/cpus
echo 0 >/dev/cpuset/syscpuset/mems
echo $$ >/dev/cpuset/syscpuset/tasks
/sbin/cpuset-hack-python.py
exec /sbin/init
файл /sbin/cpuset-hack-python.py , permissions 744 по той же причине:
#!/usr/bin/python
f=open("/dev/cpuset/tasks")
tasks=f.readlines()
f.close()
for task in tasks:
try:
f=open("/dev/cpuset/syscpuset/tasks","w")
f.write(task)
f.close()
except IOError:
pass
Я конечно вижу, что это грязно, в общем случае на /usr нельзя
рассчитывать и надо на Си писать, но влом. Или этот же эффект как-то
достигается на shell+busybox?
И запуск mplayer нашёлся способ сделать (чуть хитрее чем я тут писал -
сначала отдать PID шелла в /dev/cpuset/tasks через sudo-скрипт, а
потом запустить из этого шелла mplayer).
А теперь вопрос - как бы мне выяснить, что это у меня за 20 задач,
которые не переносятся? Проверил у нескольких /proc/$pid/cmdline -
пусто. Но там и у kswapd0 пусто, а top как-то знает, что это именно
он. Как мне-то узнать? Гугль не помог :( Особенно это будет важно,
если выяснится что весь этот хак не работает, а isolcpus работает.
И ещё вопрос - а как мне в dmesg вякнуть? А то в лог не попишешь,
подмонтирован только корень и тот read only.
--
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: