HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: Загрузка процессора на С++
Страницы: [1] 2
[Ответить]
mkol [14.12.2005 11:12] Загрузка процессора на С++:
Кто-нибудь может прислать исходник или дать ссылку на пример кода?
Gngr [17.12.2005 14:46] :
Как правило это простые математические операции сложить вычесть умножить и разделить над какими-нить переменными внутри бесконечного цикла. Если нет мат сопроцессора, то лучше тогда числа с плавующей запятой.
Хотя надо еще точно знать под какой процессор и ОС будешь писать, так некоторые из них умеют эти операции оптимизировать или балансировать загрузку ЦП. По этому надо больше информации.
mkol [18.12.2005 12:55] :
А нет ли в самом процессоре XScale встроенной функции или регистра для определения степени его загрузки?
Gngr [18.12.2005 17:37] :
Так его надо загрузить вычислениями или диагностировать его загруженность?
mkol [19.12.2005 06:20] :
Требуется, чтобы фоновая программа (сама почти бездействует) могла определить текущую степень загрузки CPU.
Gngr [19.12.2005 14:02] :
К сожалению аналог функции NtQuerySystemInformation под WinCE мне найти не удалось - другого пути я не вижу, так так загруженность CPU - это понятие ОС, а не процессора (последний работает все время).
Боюсь такая возможность сейчас отсутствует. =(
mkol [19.12.2005 18:18] :
А разве в CPU нет команды останова до первого прерывания? Многозадачная ОС работает исключительно по прерываниям, если нет текущего активного процесса. К тому же, режим энергосбережения подразумевает снижение частоты и питания при неполной нагрузке, которую определяет сам CPU.
Gngr [19.12.2005 19:03] :
Не буду врать - не знаю, как работает XScale, но в любом случаее уверен, что даже если и найдется какой-нить механизм (на пример сравенение энорго потребления с максимальным или изменение часты), то в любом случаее тебе придется получать 0 уровень доступа.
А под виндами такое можно сделать только написав драйвера. По этому врядли ты будешь с этим заморачиваться =)
ВадимП [19.12.2005 19:18] :
Загрузка процессора показывается в файле /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);
}
snn [20.12.2005 12:22] :
mkol писал(а):
Требуется, чтобы фоновая программа (сама почти бездействует) могла определить текущую степень загрузки CPU.
GetIdleTime, но не все производители её поддерживают. Есть также OEMIdle, можно посмотреть там дальше по ссылкам.
[Ответить]
[Вперед >]