2

В моем четырехъядерном процессоре кажется, что один поток (бесконечный цикл while) выполняется одновременно на 2 ядрах. Почему это? Разве один поток не должен выполняться только на одном ядре?

3 ответа3

4

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

Думайте об этом как телефонный разговор. У вас есть только один телефон * 1, и вам нужно продолжать разговор по телефону * 2 . У вас в офисе четыре человека, каждый из которых способен говорить * 3 . Ничто не мешает вам передать телефон другому человеку во время унитаза.

Обратите внимание , что есть только один человек , выступая в телефон одновременно.


* 1 Телефон - единственный шаг.
* 2 Нужно продолжать говорить, так как он работает бесконечно.
* 3 Четыре человека являются оф. четыре ядра.

0

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

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

В качестве бесконечного цикла он полностью использует ядро на протяжении своего временного интервала, но любой прирост времени основной активности (в диспетчере задач) будет представлять НАМНОГО БОЛЬШЕ, чем продолжительность отдельных временных интервалов.

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

Так как я сижу здесь с небольшой нагрузкой на мой компьютер с XP, работает 662 потока. Мой антивирус работает 78 потоков, Firefox работает 45 потоков, Dropbox работает 33. Winamp сейчас вообще ничего не играет, и все еще работает 17 потоков. Любое увеличение в отображении диспетчера задач могло иметь все эти потоки на любом ядре.

0

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

Это совсем не похоже на однопоточный процесс, но больше похоже на 4-поточный процесс. Это требует больше экспертизы.

Инструмент для использования - Process Explorer. После запуска вы можете щелкнуть правой кнопкой мыши заголовки столбцов и выбрать дополнительные столбцы, если это необходимо.

Найдя процесс, использующий эти процессоры, вы можете дважды щелкнуть по нему и выбрать вкладку «Потоки», чтобы увидеть, сколько у него потоков и что они делают (какие системные вызовы они используют).

Если это просто svchost.exe, это системная служба, которую можно определить. Наиболее вероятно, что процессор будет интенсивно использовать Windows Search.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .