Как однопоточное приложение, такое как Excel 2003, может занять более 50% гиперпоточного или двухъядерного процессора в диспетчере задач?

2607
Lunatik

Я жду, когда Excel завершит пересчет, и я замечаю, что загрузка процессора, как сообщает диспетчер задач, иногда увеличивается до 51% или 52% на Pentium 4 с гиперпоточностью. Как это делает однопоточное приложение, такое как Excel 2003?

Это просто ошибка округления / оценки со стороны диспетчера задач? Или это как-то связано с распределением HT, то есть я не вижу, чтобы это происходило на подлинной двухъядерной или двухпроцессорной машине?

3

3 ответа на вопрос

6
kbyrd

Я был бы удивлен, если Excel 2003 является однопоточным. Скорее всего, по крайней мере, поток пользовательского интерфейса и рабочий поток. Перекрашивается ли пользовательский интерфейс во время расчета? Если это так, Excel не является однопоточным.

Точно, это, скорее всего, от перекраски или ввода потока. Excel 2003 не является «многопоточным» в своих вычислениях, но это, конечно, не означает, что вся программа выполняется в одном потоке. Gnoupi 14 лет назад 0
Вместо того, чтобы спорить о внутренней работе программы с закрытым исходным кодом, почему бы вам просто не попросить диспетчер задач показать вам столбец «Потоки»? Он перечисляет количество потоков в приложении ... marcusw 14 лет назад 1
Я вижу, что Excel имеет 5 потоков, так что это имеет смысл. Я сделал предположение, что, поскольку в версиях Excel до 2007 года был только 1 поток вычислений, программа использует только 1 поток, что немного глупо в ретроспективе! :) Lunatik 14 лет назад 1
Также ОС многопоточная. В то время как Excel работает, он говорит ОС делать все что угодно. ОС может делать все что угодно в своих собственных потоках, таких как предварительная загрузка файлов, сброс измененных страниц на диск, обнуление страниц памяти, которые были возвращены, перерисовка экрана и так далее. David Schwartz 12 лет назад 0
1
ted_j

MS Windows по умолчанию не привязывает приложение к одному ядру, поэтому вы видите, что Excel выполняется на одном или другом ядре.

Вы МОЖЕТЕ (временно) изменить это поведение через диспетчер задач.

Если у вас запущен Excel, запустите файл taskmgr.exe, перейдите к списку «Процесс» и щелкните правой кнопкой мыши процесс, вы можете выбрать для него «Сродство».

Отметив это как одно ядро ​​или другое, вы увидите (опять же в taskmgr), что он работает только на одном ядре.

1
Joe Internet

Что ж, если бы у вас был одноядерный процессор? Как Excel может использовать более 50% этого? Если у вас есть 2 ядра, и каждое может работать с одним потоком, а Excel работает на одном ядре, то он может использовать до 100% этого ядра.

С гиперпоточностью у вас не 2 "реальных" потока на ядро ​​процессора, а 2 "виртуальных" потока. 2 потока должны совместно использовать свои ресурсы выполнения. Таким образом, один из потоков может использовать больше ресурсов, чем другой, что может показывать использование более 50%.

Просто попробовал это на моей домашней машине, C2D, и то же самое наблюдается, следовательно, это не может иметь ничего общего с HT как таковым. Lunatik 14 лет назад 1