![]() |
eXeL@B —› Программирование —› Как получить уровень загрузки ЦП |
Посл.ответ | Сообщение |
|
Создано: 02 октября 2012 19:04 · Личное сообщение · #1 Собственно, сабж. Важное уточнение: интересует не отношение "Idle Time / Kernel Time + User Time", а значение в левой шкале RMClock, обозванное "CPU Load". Выдержка из справки RMClock: CPU load - shows actual CPU load (i.e., the ratio of "active" processor cycles to the total processor cycles per given amount of time). This value is measured via CPU-specific performance monitoring counters and represents true CPU load, i.e., the amount of time the CPU spent in "non-asleep" state. Если я правильно понимаю, "total processor cycles" это результат RDTSC, а вот что такое "active processor cycles" и тем более как их получить, ума не приложу. ![]() |
|
Создано: 03 октября 2012 10:36 · Поправил: esa_r · Личное сообщение · #2 |
|
Создано: 03 октября 2012 10:49 · Личное сообщение · #3 |
|
Создано: 05 октября 2012 00:05 · Поправил: FalseMaster · Личное сообщение · #4 Показания примерно совпадают с диспетчером задач. для определенного процесса интересует не отношение "Idle Time / Kernel Time + User Time" http://www.codeproject.com/Articles/3413/How-to-get-CPU-usage-by-performance-counters-witho Посмотрел реализацию "CCpuUsage" - слишком много букаф (16KB) для получения одного числа. К тому же в бинарниках "RMClock" нет ни вхождений строк: "PerfOS", "PerfProc", "Disable Performance Counters" ни обращений "RegQueryValueExA" к ключу "HKEY_PERFORMANCE_DATA", а это значит, что используется какой-то более вменяемый способ. Вопрос - какой? ![]() |
|
Создано: 05 октября 2012 00:14 · Личное сообщение · #5 FalseMaster Ну так отладчик в руки и вперёд, на поиски ответа на вопрос. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 05 октября 2012 01:12 · Личное сообщение · #6 |
|
Создано: 05 октября 2012 02:03 · Личное сообщение · #7 |
|
Создано: 05 октября 2012 02:24 · Поправил: FalseMaster · Личное сообщение · #8 |
|
Создано: 05 октября 2012 04:06 · Личное сообщение · #9 FalseMaster пишет: Если я правильно понимаю, "total processor cycles" это результат RDTSC процессоры снабжены функцией снижения частоты,HT,многоядерностью - RDTSC выдаёт неверный результат. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 06 октября 2012 00:47 · Поправил: FalseMaster · Личное сообщение · #10 --> Без RING 0 <-- Про "PDH" я знаю, может быть даже попробую в дальнейшем, но сейчас неохота заголовочник писать только для того, чтобы пощупать. копай NtQuerySystemInformation У меня не мультипроцессорная система, поэтому пока хватает и "GetSystemTimes", но мне то нужна загрузка физического процессора, а не то, что показывает "Task Manager". RDTSC выдаёт неверный результат Других вариантов всё равно нет, да и не надо, ибо если поделить неверное значение "active processor cycles" на неверный результат RDTSC, всё будет в шоколаде, вопрос в том, как его получить. ClockMan, так что там про Ring 0. ![]() |
|
Создано: 09 октября 2012 20:51 · Личное сообщение · #11 Я тут кое-что накопал. В ![]() |
|
Создано: 12 октября 2012 02:33 · Личное сообщение · #12 Народ, ау. Предыдущий вопрос снимаю, ибо во всём разобрался и UCC получил. Но вот почему-то мои показания (CPU Load) не совпадают с "RMClock", а именно, в простое разница в 5-6%, но с увеличением загрузки проца выравнивается и при полной загрузке одного ядра (50%) мои цифры идентичны RMClock'овским. Из этого можно сделать вывод, что хитрая прога считает процентаж нелинейно. Отсюда вопросы: по какой формуле, зачем автор так поступил, и надо ли это вообще? ![]() |
|
Создано: 12 октября 2012 09:50 · Личное сообщение · #13 |
|
Создано: 13 октября 2012 02:44 · Поправил: FalseMaster · Личное сообщение · #14 Archer, к сожалению я не тот чел из "Матрицы", который видел баб в красном шмоте глядя на моник с циферами, и копаться в asm-листинге буду до седых волос, а я хочу всё и сразу ![]() ![]() |
|
Создано: 13 октября 2012 09:56 · Личное сообщение · #15 Тогда есть топик Поиск специалистов, где оформляется софт, делается описание типа "хочу алгоритм на языке ХХХ в сорцах из программы УУУ, который делает ..." и выставляется бюджет, там на бабу в красном шмоте посмотрят за тебя. Поскольку это уже не программирование, типа хочу сделать ХХХ, а скорее я делал ХХХ, но не совпадает с УУУ, хочу узнать, как там. ![]() |
|
Создано: 14 октября 2012 00:02 · Личное сообщение · #16 Не хочу я никаких алгоритмов. Да и вопрос мой как-то незаметно перетёк к нюансам работы процессора, ибо должна же быть причина, по которой автор "RMClock" ввёл некую дополнительную величину в формулу. Я по простоте душевной думал, что знающие люди поделятся мыслями на этот счёт, но нет, так нет, оставлю пока как есть. ![]() |
![]() |
eXeL@B —› Программирование —› Как получить уровень загрузки ЦП |