Почему ядра не загружены равномерно?

Почему ядра не загружены равномерно?

Вы используете Internet Explorer устаревшей и не поддерживаемой более версии. Чтобы не было проблем с отображением сайтов или форумов обновите его до версии 7.0 или более новой. Ещё лучше - поставьте браузер Opera или Mozilla Firefox.

Обсудить и задать вопросы можно в этой теме.

Сергей-4030 исключающий третье
  • 34
  • Ответить на сообщение
chatskiy опытный

Сергей-4030> На моем i7-2600 8 ядер, при этом ядра загружены неравномерно, примерно как во вложении. Почему?

потому что в вашем i7-2600 4 ядра

  • 32
  • Ответить на сообщение
координатор

Обзор Intel Core i7-2600K

Обзор Intel Core i7-2600K

Сергей-4030 исключающий третье

Сергей-4030>> На моем i7-2600 8 ядер, при этом ядра загружены неравномерно, примерно как во вложении. Почему? chatskiy> потому что в вашем i7-2600 4 ядра

Не надо прикапываться к частностям. Для ОС у меня 8 ядер, а распределяет треды ОС.

  • 30
  • Ответить на сообщение
Balancer администратор

Сергей-4030> Не надо прикапываться к частностям. Для ОС у меня 8 ядер, а распределяет треды ОС.

Ну, у меня этой машине на одном с «двумя ядрами для ОС» оно так:

Правда, это и ОС другая

Кстати, забавно смотреть, когда систему грузит только один поток — он регулярно перекидывается с ядра на ядро. Видимо, чтобы грелось равномернее.

  • 1
  • Ответить на сообщение
Wyvern-2 координатор
  • 18
  • Ответить на сообщение
Сергей-4030 исключающий третье

Wyvern-2> ОС действительно "видит" два процессора (каждый со своим состоянием потока) - но на самом деле параллельно они не исполняются - истинной параллельности.

Виверн, знаете, за что мне зарплату платят?

  • 17
  • Ответить на сообщение
Татарин координатор Sheradenin аксакал

Wyvern-2>> ОС действительно "видит" два процессора (каждый со своим состоянием потока) - но на самом деле параллельно они не исполняются - истинной параллельности. Сергей-4030> Виверн, знаете, за что мне зарплату платят?

Он прав - гипертрединговые как бы ядра могут простаивать, потому что процессор не в состоянии найти для них свободные блоки. Запустите еще какой-то простой софт где не требуется дефицитные АЛУ или плавающая точка - эти ядра и загрузятся.

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

И еще вопрос интересный - откуда вы знаете что операционка не умеет отличать настоящее ядро от виртуального?.

  • 14
  • Ответить на сообщение
Сергей-4030 исключающий третье

Sheradenin> Он прав - гипертрединговые как бы ядра могут простаивать, потому что процессор не в состоянии найти для них свободные блоки.

В данном случае - нет, если загрузка процессоров достигает 100%, "подключаются" и "виртуальные". Но в большинстве случаев - нет. Больше того, довольно типична ситуация, когда только 2 ядра серьезно нагружены (около 40-50%), а остальные - по нулям.

Sheradenin> У меня например запущенный лайтрум при массовой обработке фото загружает полностью все ядра на ноутбучном i5, включая виртуальные. А так обычно картина как у вас - только графиков вдвое меньше.

Когда я запускаю тест, у меня загружаются все ядра. А когда достаточно 2-4 ядер, ОС почему-то загружает их и не передает треды на "совсем свободные" процессоры.

  • 2
  • Ответить на сообщение
Татарин координатор

Sheradenin> Он прав - гипертрединговые как бы ядра могут простаивать, потому что процессор не в состоянии найти для них свободные блоки. Запустите еще какой-то простой софт где не требуется дефицитные АЛУ или плавающая точка - эти ядра и загрузятся. Такой простой - не отразится на индикации загрузки процессора в винде. С точки зрения ОС - это и есть ситуация 100% загрузки.

Sheradenin> И еще вопрос интересный - откуда вы знаете что операционка не умеет отличать настоящее ядро от виртуального?. А разве это было сказано?

Я не нашёл, но если было - то это, конечно, неправда. По меньшей мере, в вин7, о чём Микрософт хвалилась весьма отдельно: в первую очередь загружаются реальные ядра. И уж затем, при необходимости, возможности и полезности - HT.

  • 1
  • Ответить на сообщение
Сергей-4030 исключающий третье

Sheradenin> И еще вопрос интересный - откуда вы знаете что операционка не умеет отличать настоящее ядро от виртуального?.

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

  • 8
  • Ответить на сообщение
Татарин координатор
  • 1
  • Ответить на сообщение
Сергей-4030 исключающий третье

Татарин> Я не нашёл, но если было - то это, конечно, неправда. По меньшей мере, в вин7, о чём Микрософт хвалилась весьма отдельно: в первую очередь загружаются реальные ядра. И уж затем, при необходимости, возможности и полезности - HT.

По-моему, это не так. По крайней мере, в ранних версиях если уж HT включен, то все процессоры - виртуальные. Чтобы сделать их "реальными" надо отключить HT. В том и смысл HT, что один "реальный" процессор эмулирует два "виртуальных".

Сергей-4030 исключающий третье

Татарин> "The second thing that we're excited to announce in terms of the cooperation and the work that's been done is around hyper-threading. And obviously the work that Intel has done around hyper-threading across a multi-core system is absolutely critical for you. And so the work that we've done in Windows 7 in the scheduler and in the core of the system to take full advantage of those capabilities, ultimately we think together we can deliver a great and better experience for you."

Это, собственно, незначимое заявление. Я не вижу, про что тут говорится, кроме того, что "мы умницы".

Татарин координатор

Сергей-4030> Они все виртуальные. "Настоящие" - это когда виртуальных нет, а когда есть, то они все виртуальные, для операционки, вроде как, одинаковые. Не-а.

Причём, когда система бежит на реальном железе - это как бы понятно, а вот с новомодными системами виртуализации микрософтовцы помучались.

  • 7
  • Ответить на сообщение
Сергей-4030 исключающий третье

Сергей-4030>> Они все виртуальные. "Настоящие" - это когда виртуальных нет, а когда есть, то они все виртуальные, для операционки, вроде как, одинаковые. Татарин> Не-а.

  • 6
  • Ответить на сообщение
Татарин координатор

GetLogicalProcessorInformation function

  • 5
  • Ответить на сообщение
Сергей-4030 исключающий третье

Татарин> http://msdn.microsoft.com/en-us/. /desktop/ms683194%28v=VS.85%29.aspx Татарин> the best one. Татарин> Для программиста-прикладника, конечно. Железячников тут всё равно нет.

Чего-то я не уверен.

Мне кажется, в нашем случае надо именно что use the CPUID instruction, которая скажет, что процессор поддерживает HT, но и только, никаких сведений про то, что текущий процессор - "реальный" оно не даст.

Википедия говорит, что

  • 4
  • Ответить на сообщение
Татарин координатор

Сергей-4030> Чего-то я не уверен. Блин, да, насчёт прикладников погорячился.

Но опсистема - сама система - знает. Хотя бы из MADT.

"Windows will attempt to utilize the logical processors in the same sequence as the BIOS listed them in the MADT. Intel direction to BIOS developers is given in the “Intel Netburst Micro-Architecture BIOS Writer’s Guide.” For information about how to obtain this document, see Section 8, “Resources and Call to Action” at the end of this white paper. Intel's recommendation is to list the first logical processor on each of the physical HT processors before listing any of the second logical processors. This strategy ensures that the operating system attempts to utilize the logical processors in that order. Listing the first logical processor on each of the physical HT processors should help to ensure that the optimal performance is achieved on software that is not HT-aware. Performance on non-HT-aware versions of the Windows operating system, such as Windows 2000, may not be optimal if this direction is not followed in the BIOS. For more information about operating systems that are not hyper-threading aware, see Section 4.1, “Operating Systems That Are Not Hyper-Threading Aware (Windows 2000)” later in this white paper."

(Для соблюдения правил: Windows использует процессоры в порядке их перечисления BIOS в MADT. A Intel производителям БИОС с поддержкой НТ советует перечислять их так: сначала все "первые" всех физических, затем все "вторые")

📎📎📎📎📎📎📎📎📎📎