LINUX.ORG.RU

В радиотехнике есть такая хренота, называется обратная связь.

Допустим ты форкаешься на два процесса. Первый смотрит каждую секунду
вывод программы top, и через пайп передаат данные второму процессу,
который в зависимости значений загрузки проца умеет повышать или понижать множитель в цикле фор. Эта вот идея и есть обратная связь. Только в проводнике там частоты или заряды таким образом сравниваются... На перле это сделать нехитро через eval например...

например както так:

usr/bin/perl
parent
@mass=qx[top];
какннить через IPC

child
if $mass[1]>=20% then begin sub {$c++ foreach my $xx($xx=0; $xx++; $cc<=sqr($cc)){$'}} end
if $mass[1]<=20% then begin sub {$c-- foreach my $xx1($xx=0; $xx++; $cc<=sqr($cc)){$'}} end


vilfred ☆☆
()
Ответ на: комментарий от vilfred

Ну я, например, не top смотрю, а сразу парсю /proc/stat А идея у меня примерно такая=же была, но я не через пайп общаюсь, а сигналы посылаю

anonymous
()
Ответ на: комментарий от anonymous

Написал!

<a href='http://www.msiu.ru/~vetchi-v/static_proc_load.c'>http://www.msiu.ru/~vetchi-v/static_proc_load.c</a>;

gcc -lm static_proc_load.c ^^ НЕ ЗАБУДЬТЕ!

Она довольно долго выходит на заданную загрузку. Надо поиграться с шагом увеличения переменной counter в коде ниже (с одной стороны, чем шаг больше, тем быстрее находится нужный вес, с другой стороны, чем больше шаг, тем сильнее).

============ кусок кода ====================== void signal_handler_incr(int signum) { counter += 100000; printf("counter = %d\n", counter); }

void signal_handler_decr(int signum) { counter -= 10000; printf("counter = %d\n", counter); } ==============================================

В глоб. переменной req_idle задаете требуемое значение idle времени (в процентах).

По крайней мере на PIII 1200 работает неплохо! :)))

anonymous
()
Ответ на: комментарий от anonymous

(Постите, криво написал :) )

Написал!

<a href='http://www.msiu.ru/~vetchi-v/static_proc_load.c'> http://www.msiu.ru/~vetchi-v/static_proc_load.c </a>

gcc -lm static_proc_load.c ^^ НЕ ЗАБУДЬТЕ!

Она довольно долго выходит на заданную загрузку.

Надо поиграться с шагом увеличения переменной counter в коде ниже

(с одной стороны, чем шаг больше, тем быстрее находится нужный вес,

с другой стороны, чем больше шаг, тем сильнее).

============ кусок кода ======================

<pre> void signal_handler_incr(int signum) { counter += 100000; printf("counter = %d\n", counter); }

void signal_handler_decr(int signum) { counter -= 10000; printf("counter = %d\n", counter); } </pre>

==============================================

В глоб. переменной req_idle задаете требуемое значение idle времени (в процентах).

По крайней мере на PIII 1200 работает неплохо! :)))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.