singlepost

Загрузка процессора. << На главную или назад  

Подскажите как в ХР узнать загрузку процессора. Знаю про NtQuerySystemInformation и GetSystemTimes, но мой результат сильно отличается от диспетчера. И влияет ли количество ядер процессора при определении загруженности. Язык С++.

9 ответов в теме “Загрузка процессора.”

  1. 8
    Сергей Фирсов ответил:

    Все. Всем спасибо, разобрался!

  2. 7
    Сергей Фирсов ответил:

    GetSystemTimes возвращает три переменные, что на что делить?
    И у меня она почему-то всегда везде возвращает нули. Как ее правильно использовать?

  3. 6
    Александр Lert ответил:

    Если тебе нужно получить время выполнения ПРОЦЕССА, то GetProcessTimes. Не знаю, к чему её посоветовали в данном случае.
    По-видимому тебе просто нужен процент загрузки ПРОЦЕССОРА (не ПРОЦЕССА), как в диспетчере задач. Ничего перебирать не надо. Просто вызвать GetSystemTimes – получаем время выполнения; через секунду вызвать еще раз. Разделить разницу в показаниях функции на эту секунду и умножить на 100% – вот и загрузка. NtQuerySystemInformation тут ни к чему.
    Надо учесть, что GetSystemTimes возвращает суммарное время всех ядер. Если нужно получить загрузку ядер по отдельности, то по-видимому, придется использовать WMI.

  4. 5
    Сергей Фирсов ответил:

    Так это надо перебирать все процессы? Зачем тогда NtQuerySystemInformation и GetSystemTimes?

  5. 4
    Антон Щиров ответил:

    Суммарная загрузка каждого процесса даст загрузку системы

    > А как получить кол-во ядер
    GetSystemInfo()

  6. 3
    Артём Малаховский ответил:

    А как получить кол-во ядер?

  7. 2
    Сергей Фирсов ответил:

    Нет. Мне нужно узнать общую загрузку.

  8. 1
    Антон Щиров ответил:

    GetProcessTimes()

    > И влияет ли количество ядер
    Да. Результат нужно поделить на число ядер

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.