Стандартный способ отслеживания / расчета использования процессора и ввода-вывода процесса - PullRequest
0 голосов
/ 03 марта 2011

Я искал стандартный способ вычисления использования процессора и ввода-вывода для запуска процесса. Я искал следующие варианты.

Запускаем программу Windows и определяем, когда она заканчивается C ++

Как этот код вычисляет количество прошедших циклов ЦП?

http://www.codeproject.com/KB/threads/Get_CPU_Usage.aspx

Я не могу заставить работать последний. Мне нужны эти цифры.

usr = userTime - last_userTime;
ker = kernelTime - last_kernelTime;
idl = idleTime - last_idleTime;

В первую очередь я ищу решения на базе Windows GCC. Я использую Dev C ++ 4 для тестирования этих. Меня также интересует аналогичное решение для Unix (Solaris / Linux с GCC).

Также существует способ получения процессора, который используется процессом, когда процесс находится в рабочем состоянии (например, отслеживание на графике), наряду с ограничением использования процессором процессора. Примечание: я не ищу инструменты. Я ищу стандартный код C. Если вы хотите поделиться какими-либо стандартами из других языков, таких как C ++, Python, пожалуйста.

1 Ответ

1 голос
/ 03 марта 2011

Стандартным способом было бы использовать счетчики производительности Windows.Они бывают как в «сыром», так и в «готовом» виде, и к ним можно получить доступ как минимум тремя разными способами:

  1. direct: специальный ключ в реестре Windows
  2. Компонент Performance Data Helper ( PDH )
  3. WMI

Я должен предупредить вас, что все они имеют довольно крутая начальная кривая обучения.Как только вы дошли до того, что вы можете собирать и использовать данные из одного счетчика достаточно хорошо, добавление большего количества данных обычно довольно просто.

В вашем вопросе вы также упоминаете совершенно другой способ сбора данных об использовании ЦП.данные.Идея в том, чтобы использовать GetProcessTimes на регулярной основе.Например, после запуска дочернего процесса вы можете установить таймер и вызывать его раз в секунду, чтобы получать информацию о текущем использовании процессором дочернего процесса.

Если вы собираетесь использовать процессор таким образом,Вы, вероятно, захотите использовать GetProcessMemoryInfo для сбора статистики использования памяти почти таким же образом.

Однако для статистики ввода-вывода я не знаю много впуть реальных альтернатив счетчикам производительности.

...