Об использовании ЦП
Я пытаюсь понять, почему разные инструменты показывают разные результаты использования процессора.
Я создал простой цикл, который должен полностью потреблять все ресурсы процессора. Однако в зависимости от того, какой инструмент я использую для наблюдения за нагрузкой процессора, я вижу очень разные результаты.
Ситуация примерно такая:
- Диспетчер задач показывает максимум 45% загрузки процессора, нагрузка практически постоянна.
- Диагностический инструмент Visual Studio показывает нагрузку от 50% до 100% , а среднее значение составляет примерно 75%
- Монитор производительности Windows показывает 100% - ную нагрузку все время, когда тест выполняется.
Обратите внимание, что эти наблюдения взяты из одного и того же тестового запуска в одно и то же время, просто с использованием разных инструментов. Что могло привести к таким разным результатам?
Мой компьютер содержит 4 ядра, поэтому все, что меньше 4 потоков, показывает меньшее использование, но с 4 или более потоками результат будет таким,как описано. Операционная система-Windows 10 Pro.
Что я уже пробовал:
Тест, который я использовал
public static void Oper() { int a = 1; while (1 == 1) { a += 1; a -= 1; } } static void Main(string[] args) { System.Threading.Thread t1 = new System.Threading.Thread(Oper); System.Threading.Thread t2 = new System.Threading.Thread(Oper); System.Threading.Thread t3 = new System.Threading.Thread(Oper); System.Threading.Thread t4 = new System.Threading.Thread(Oper); System.Threading.Thread t5 = new System.Threading.Thread(Oper); System.Threading.Thread t6 = new System.Threading.Thread(Oper); System.Threading.Thread t7 = new System.Threading.Thread(Oper); t1.Start(); t2.Start(); t3.Start(); t4.Start(); t5.Start(); t6.Start(); t7.Start(); Oper(); }
0x01AA
ха-ха, Читайте также это: Почему процессы умножения более эффективны, чем один процесс с потоками умножения для распараллеливания?[^]
Wendelius
Спасибо, это интересная тема для чтения, особенно ответ от @Stefan63
Хотя весь разговор имеет смысл, я все еще не понимаю, почему я вижу такие разные результаты в одно и то же время... Похоже, что инструменты наблюдают за ситуацией совсем по-другому. Больше всего меня озадачивает разница между монитором производительности и диспетчером задач
0x01AA
Имейте в виду, что вывод stefan63 был/есть "неправильным". Нужно некоторое время, чтобы восстановить дело. Может быть, я смогу вернуться с какой-нибудь полезной информацией...