Загрузка процессора на С++
Загрузка процессора на С++
Кто-нибудь может прислать исходник или дать ссылку на пример кода?
Как правило это простые математические операции сложить вычесть умножить и разделить над какими-нить переменными внутри бесконечного цикла. Если нет мат сопроцессора, то лучше тогда числа с плавующей запятой.
Хотя надо еще точно знать под какой процессор и ОС будешь писать, так некоторые из них умеют эти операции оптимизировать или балансировать загрузку ЦП. По этому надо больше информации.
Хотя надо еще точно знать под какой процессор и ОС будешь писать, так некоторые из них умеют эти операции оптимизировать или балансировать загрузку ЦП. По этому надо больше информации.
Не буду врать - не знаю, как работает XScale, но в любом случаее уверен, что даже если и найдется какой-нить механизм (на пример сравенение энорго потребления с максимальным или изменение часты), то в любом случаее тебе придется получать 0 уровень доступа.
А под виндами такое можно сделать только написав драйвера. По этому врядли ты будешь с этим заморачиваться =)
А под виндами такое можно сделать только написав драйвера. По этому врядли ты будешь с этим заморачиваться =)
Загрузка процессора показывается в файле /proc/stat.
Пример рассчета загрузки процессора (отдельно считается процент простоя процессора, ожидания окончания ввода/вывода, загрузки пользовательскими программами и процент времени потребляемого собственно операционной системой):
Пример рассчета загрузки процессора (отдельно считается процент простоя процессора, ожидания окончания ввода/вывода, загрузки пользовательскими программами и процент времени потребляемого собственно операционной системой):
Код: Выделить всё
/* get the cpu time info */
{
fd = open("stat", O_RDONLY);
len = read(fd, buffer, sizeof(buffer)-1);
close(fd);
buffer[len] = '\0';
p = skip_token(buffer); /* "cpu" */
cp_time[0] = strtoul(p, &p, 0);
cp_time[1] = strtoul(p, &p, 0);
cp_time[2] = strtoul(p, &p, 0);
cp_time[3] = strtoul(p, &p, 0);
/* convert cp_time counts to percentages */
percentages(4, cpu_states, cp_time, cp_old, cp_diff);
}
GetIdleTime, но не все производители её поддерживают. Есть также OEMIdle, можно посмотреть там дальше по ссылкам.mkol писал(а):Требуется, чтобы фоновая программа (сама почти бездействует) могла определить текущую степень загрузки CPU.
LOOX 720