Как увидеть использование каждого ядра в Windows 10?

На вкладке Производительность диспетчера задач показано следующее:

т.е. использование ЦП и количество ядер (и логических ядер), которые у меня есть.

Могу ли я получить такой график для каждого ядра, чтобы увидеть, действительно ли что-то работает параллельно или нет (например, некоторые многопроцессорность на Python)?


Щелкните правой кнопкой мыши график -> Измените график на -> Логические процессоры

Он покажет вам использование каждого логического процессора.



Метод определения текущей загрузки ЦП не работает надежно в Windows 10

Я использовал следующее метод получения текущего использования ЦП для всего компьютера:

  HANDLE hOut = GetStdHandle (STD_OUTPUT_HANDLE);//Используем простой бесконечный цикл для отображения концепции for (;; :: Sleep  (500)) {COORD Coord = {0, 0};  SetConsoleCursorPosition (hOut ,ordin);  int nCpuUse = get_cpu_utilization_method_01 ();  _tprintf (L "Использование ЦП:% d  t", nCpuUse);} int get_cpu_utilization_method_01 () {int nRes = -1;  FILETIME ftIdle, ftKrnl, ftUsr;  if (GetSystemTimes (& ftIdle, & ftKrnl, & ftUsr)) {статический BOOL bUsedOnce = FALSE;  статический ULONGLONG uOldIdle = 0;  статический ULONGLONG uOldKrnl = 0;  статический ULONGLONG uOldUsr = 0;  ULONGLONG uIdle = ((ULONGLONG) ftIdle.dwHighDateTime  100) nRes = 100;  }}//Запоминаем предыдущие данные bUsedOnce = TRUE;  uOldIdle = uIdle;  uOldKrnl = uKrnl;  uOldUsr = uUsr;  } return nRes;}  

Но начиная с Windows 10 я получаю отчеты от пользователей моего программного обеспечения о том, что показания, полученные этим методом, могут быть неправильными. Некоторые люди сказали мне, что он может сообщать значения, составляющие половину от того, что показывал Диспетчер задач Windows .

Некоторое время я проводил собственные тесты и это было похоже на то, что Диспетчер задач читает на моем ноутбуке, но когда я запускаю его на своем рабочем столе с процессором Intel Core i7-4770 @ 3,40 ГГц с 4 физическими и 8 логических ядер, показание кажется постоянно слишком низким:

Обратите внимание, что у меня была установлена ​​Windows 7 на том же оборудовании (теперь работает Windows 10), и тогда она работала довольно надежно на Windows 7..

Есть идеи, как заставить его работать в Windows 10?


2

Попробуйте это:

  #include "TCHAR.h" #include "pdh.h" static PDH_HQUERY cpuQuery; static  PDH_HCOUNTER cpuTotal; void init () {PdhOpenQuery (NULL, NULL, & cpuQuery); PdhAddCounter (cpuQuery, L "\ Процессор (_Total) \% Процессорное время", NULL, & cpuTotataCpuTotal);  ) {PDH_FMT_COUNTERVALUE counterVal; PdhCollectQueryData (cpuQuery); PdhGetFormattedCounterValue (cpuTotal, PDH_FMT_DOUBLE, NULL, & counterVal); return counterVal.doubleValue   #  div> 
Улучшите этот ответ
ответил 7 февраля 2017 в 22:08

  • Спасибо. С какой минимальной частотой я могу вызывать getCurrentValue ? — c00000fd, 07 фев. 2017, в 22:38
  • Также я не уверен, как он будет работать с многопроцессорной/ядерной системой. Нужно ли мне использовать какой-либо из этих флагов PDH_FMT_NOCAP100 | PDH_FMT_NOSCALE для вызова PdhGetFormattedCounterValue ? Не могли бы вы уточнить, пожалуйста? — c00000fd 08 фев. 2017, в 2:26
  • 1
    @ c00000fd: «С какой минимальной частотой я могу вызывать getCurrentValue?» — Ноль. Вы хотели вместо этого спросить о максимальной частоте? — IInspectable, 8 февраля 2017 г., 15:33
  • 1
    @IInspectable: Нет, я это имел в виду. Видите ли, опубликованный мною метод нельзя вызывать два раза подряд, чтобы получить надежный результат. Я думаю, что между этими вызовами должно было быть не менее 250 мс. Другими словами, для сбора информации требовалось время. Вот почему я спрашиваю здесь. — c00000fd 8 фев. ’17 в 17:50
добавить комментарий |

Попробуйте это:

  #include "TCHAR.h" #include "pdh  .h "статический PDH_HQUERY cpuQuery; статический PDH_HCOUNTER cpuTotal; void init () {PdhOpenQuery (NULL, NULL, & cpuQuery); PdhAddCounter (cpuQuery, L" \ Процессор (_Total); PdhOpenQuery (_Total);  (cpuQuery);} double getCurrentValue () {PDH_FMT_COUNTERVALUE counterVal; PdhCollectQueryData (cpuQuery); PdhGetFormattedCounterValue (cpuTotal, PDH_FMTouble> counterVal; NULL  counterVal; NULL 

Оцените статью
logicle.ru
Добавить комментарий