C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Определить загрузку процесора в процентах!, Определить загрузку процесора в процента
Александр
Отправлено: 06.05.2005, 15:41


Не зарегистрирован







Нужна помощь!
Задался вот таким вопросом!
Как получить список процессов понятно как модули посмитать и все такое тоже понятно! А вот как определить загрузку процессора в процентах от того или иного процесса??
Как это делает к примеру windows task manager?
Долго искал , вроде как это можно сделать через WMI — счетчики производительности только вот ни как работаь с ними ни прав ли я в этом вопросе незнаю! Кто сталкивался с такой задачей подскажите!
Или дайте ссылки на реализацию или описание!

Заранее благодарен!
Admin
Отправлено: 06.05.2005, 16:13


Владимир

Группа: Администратор
Сообщений: 1190



http://inprise.xportal.ru/forum/printview....43d7d9acc3cf972
Александр
Отправлено: 06.05.2005, 16:56


Не зарегистрирован







8))Прошелся я по ссылке и по выложенным!
Но там везде идет речь о полной загрузке процессора!
А мне нужно для каждого конкретного процесса!
Где то наткунулся на это
QUOTE

имхо такой ф-ии нет. эта фишка подсчитывается аналитически. нужно просто посчитать количество секунд выделенных потоку за минуту (GetThreadTimes) и поделить на 1. в сумме получится общая зугрузка проца.

Но если это и работает то уж очень больгая погрешность измерени и интревал 1 раз в минуту явно можно реализорвать быстрее!! Но вот как???
Вопрос остается открытвым! 8)
Помогайте!

Отредактировано Gedeon — 11/05/2005, 12:41
Александр
Отправлено: 11.05.2005, 08:50


Не зарегистрирован







Ну что ни у кого идей нету?
Guest
Отправлено: 11.05.2005, 10:11


Не зарегистрирован







Есть недокументированные функции NT, которые загрузку по каждому процессу дают, но я уже не помню какие — давно делал ради интереса. Посмотри Task Manager в каком-нибудь редакторе — увидишь название функций. Я с этого начинал, потом уже искал инфу.
Gedeon
Отправлено: 11.05.2005, 13:04


Ветеран

Группа: Модератор
Сообщений: 1742



Как по мне так и в таск менеджере время на процесс определяется таким же способом, как Александр привел в цитате, обратите внимание: он обновляет данные каждую секунду, ведь минуту ждать не обязательно, и исходя из того, что подавляющее большинство процессов имеют значение 0 очень похоже на то, что замер так и призводится. Самое радостное в этом способе то, что надо в конце поделить на 1 biggrin.gif .
dEEp
Отправлено: 16.05.2005, 03:07


Дежурный стрелочник

Группа: Участник
Сообщений: 69



double CPUSpeed (void)
{
DWORD dwTimerHi, dwTimerLo;
double dRes;
asm
{
DW 0x310F
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}

Sleep (500);
asm
{
DW 0x310F
sub EAX, dwTimerLo
sub EAX, dwTimerHi
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}
dRes = dwTimerLo/(1000.0*500);
return sRes;
}
dEEp
Отправлено: 16.05.2005, 03:09


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Не то и не туда, да ещё и не в тему!
Во как.
Вообщем, извините...

Вернуться в Вопросы программирования в C++Builder