Однопоточный процесс выполняется на 2 ядрах


2

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


Не забывайте, что средний процесс всегда имеет более одного потока, установите сходство процессов, чтобы ограничить процесс выполнением всех его потоков на одном ядре.
ta.speot.is

Ответы:


4

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

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

Обратите внимание, что только один человек говорит на телефон в то же время ,


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


Как будут управляться ресурсы? Есть ли необходимость переносить кэш L1 между ядрами? Почему он не работает только на одном ядре, а не на двух ядрах (есть ли преимущество ... кажется, что это совсем наоборот)
agz

1) Какие ресурсы? Не могли бы вы расширить это, чтобы быть более конкретным? 2) Именно планировщик в ОС решает, на каком ядре будет запускаться процесс. Обычно они стараются поддерживать один и тот же процесс на одном и том же ядре, чтобы извлечь выгоду из обращений к кэшу и потенциальных возможностей турбонаддува. 3) Когерентность кэша обрабатывается самим процессором на архитектуре x86. Вы не указали, что используете x86, но изображение диспетчера задач сильно намекает на окно и, следовательно, обычно на x86.
Hennes

Вы делали снимок диспетчера задач на 2 физических, 4 логических процессорах?
Hennes

Это ядро ​​2 Quad Q9650, 4 физических ядра и 4 потока
agz

2
У меня нет доступа к источнику планировщика задач Windows или его логике. Поэтому я не могу ответить, что для Windows. Лучшее, что я могу сделать, это Угадай , Например. драйвер, который имеет сильное предпочтение ядру 0, который протолкнул протектор к другому ядру. Но я повторяю: Угадай
Hennes

0

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

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

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

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

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


0

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.