Александр |
Отправлено: 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 .
|
|
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
|
Не то и не туда, да ещё и не в тему!
Во как.
Вообщем, извините...
|
|