Как однопоточное приложение, такое как Excel 2003, может занять более 50% гиперпоточного или двухъядерного процессора в диспетчере задач?
Я жду, когда Excel завершит пересчет, и я замечаю, что загрузка процессора, как сообщает диспетчер задач, иногда увеличивается до 51% или 52% на Pentium 4 с гиперпоточностью. Как однопоточное приложение, такое как Excel 2003, делает это?
Это просто ошибка округления / оценки со стороны диспетчера задач? Или это как-то связано с распределением HT, то есть я не вижу, чтобы это происходило на подлинной двухъядерной или двухпроцессорной машине?
3 ответа
Я был бы удивлен, если Excel 2003 является однопоточным. Скорее всего, по крайней мере, поток пользовательского интерфейса и рабочий поток. Перекрашивается ли пользовательский интерфейс во время расчета? Если это так, Excel не является однопоточным.
Ну, а если бы у вас был одноядерный процессор? Как Excel может использовать более 50% этого? Если у вас есть 2 ядра, и каждое может работать с одним потоком, а Excel работает на одном ядре, то он может использовать до 100% этого ядра.
С помощью гиперпоточности у вас нет 2 "реальных" потоков на ядро процессора, а 2 "виртуальных" потока. 2 потока должны совместно использовать свои ресурсы выполнения. Таким образом, один из потоков может использовать больше ресурсов, чем другой, что может показывать использование более 50%.
MS Windows по умолчанию не привязывает приложение к одному ядру, поэтому вы видите, что Excel выполняется на одном или другом ядре.
Вы МОЖЕТЕ (временно) изменить это поведение через диспетчер задач.
Если у вас запущен Excel, запустите файл taskmgr.exe, перейдите в список "Процесс" и щелкните правой кнопкой мыши по процессу, вы можете выбрать для него "Сродство".
Отметив его для одного или другого ядра, вы увидите (опять же в taskmgr), что он работает только на одном ядре.