Увеличение загрузки ЦП и удержание его на определенном уровне с помощью кода C - PullRequest
4 голосов
/ 09 февраля 2012

Я пишу код на C (в Linux), который должен потреблять определенное количество процессора, когда он работает. Я провожу эксперимент, в котором я запускаю определенные действия при достижении определенного порога процессора. Итак, когда использование достигает определенного порога, мне нужно держать его в этом состоянии, скажем, 30 секунд, пока я не закончу свои эксперименты. Я наблюдаю за использованием ЦП с помощью команды top.

Итак, мои вопросы - 1. Как мне увеличить использование ЦП до заданного значения (если возможно, детерминированным способом)? 2. Как только я доберусь до порога, есть ли способ сохранить его на этом уровне в течение заранее определенного времени?

Пример вывода команды top (9-й столбец - CPU, используемый процессом top) - 19304 abcde 16 0 5448 1212 808 R 0,2 0,0 0: 00,06 top

Как и выше, я посмотрю на строку сверху, которая показывает использование моего двоичного файла.

Любая помощь будет оценена. Кроме того, дайте мне знать, если вам нужно больше деталей.

Спасибо!

Edit: Следующие строки кода позволили мне достаточно хорошо контролировать загрузку процессора - в следующем случае у меня есть 2 варианта - держать его выше 50% и держать ниже 50% - после некоторой проб и ошибок я установил заданные значения срабатывания .

endwait = clock() + ( seconds * CLOCKS_PER_SEC );
while( clock() < endwait ) {}
if (cpu_utilization > 50)
    usleep(250000); 
else
    usleep(700000);

Надеюсь, это поможет!

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Что-то в этом роде должно иметь постоянную загрузку процессора, по моему мнению: md5sum </ dev / urandom </p>

2 голосов
/ 09 февраля 2012

cpuburn , как известно, делает загрузку процессора настолько высокой, что она поднимает свою температуру до максимального уровня. Кажется, больше нет официального сайта об этом, но вы все равно можете получить доступ к исходному коду с помощью пакета Debian или googlecode . Он реализован в asm, так что вам нужно сделать немного клея, чтобы взаимодействовать с ним в C.

...