[image]

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

 
1 2 3 4 5 6
US Сергей-4030 #08.01.2012 22:29
+
-1
-
edit
 

Сергей-4030

исключающий третье
★★
На моем i7-2600 8 ядер, при этом ядра загружены неравномерно, примерно как во вложении. Почему?
Прикреплённые файлы:
 
   16.0.912.7516.0.912.75
RU chatskiy #08.01.2012 22:49  @Сергей-4030#08.01.2012 22:29
+
+3
-
edit
 

chatskiy

опытный

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

потому что в вашем i7-2600 4 ядра :)
   
RU Полл #08.01.2012 22:53  @chatskiy#08.01.2012 22:49
+
+1
-
edit
 

Полл

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


Обзор Intel Core i7-2600K


Обзор Intel Core i7-2600K

// www.pcoverlook.com
 

Частота: 3.4 ГГц
Ядро: Sandy Bridge
Техпроцесс: 32нм
Количество ядер: 4 Физических, 4 логических
Кэш: L1: 64КБ + 64КБ (в каждом ядре), L2: 512 КБ (в каждом ядре), L3: 8МБ
Контроллер памяти: Двухканальный DDR3 1333 МГц
ГП: HD 3000
Сокет: LGA1155
TDP: 95 Вт
Дополнительно: SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.2, EM64T, EIST, Execute Disable Bit, VT, AES-NI, Turbo Boost 2.0, AVX, Quick Sync Video
   
US Сергей-4030 #08.01.2012 23:10  @chatskiy#08.01.2012 22:49
+
0 (+1/-1)
-
edit
 

Сергей-4030

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

Не надо прикапываться к частностям. Для ОС у меня 8 ядер, а распределяет треды ОС.
   16.0.912.7516.0.912.75
RU Balancer #08.01.2012 23:46  @Сергей-4030#08.01.2012 23:10
+
-1
-
edit
 

Balancer

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

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



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



Кстати, забавно смотреть, когда систему грузит только один поток — он регулярно перекидывается с ядра на ядро. Видимо, чтобы грелось равномернее.
   
MD Wyvern-2 #09.01.2012 00:51  @Сергей-4030#08.01.2012 23:10
+
-2
-
edit
 

Wyvern-2

координатор
★★★★★
chatskiy>> потому что в вашем i7-2600 4 ядра :)
Сергей-4030> Не надо прикапываться к частностям.
Всегда надо - ибо в них суть. Эти самые "4 лишние виртуальные ядра" на самом деле в HyperThreading-е псевдопроцессоры - обманка для ОС
ОС действительно "видит" два процессора (каждый со своим состоянием потока) - но на самом деле параллельно они не исполняются - истинной параллельности то нет. Поэтому производительность псевдопроцессоров сильно зависит от состава потока команд. Я с этой хренью на старом Пне4 встретился, когда в Архикаде произодительность иногда падала, когда эту хрень включали.
   3.0.193.0.19
US Сергей-4030 #09.01.2012 01:18  @Wyvern-2#09.01.2012 00:51
+
0 (+1/-1)
-
edit
 

Сергей-4030

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

Виверн, знаете, за что мне зарплату платят?
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 01:32  @Сергей-4030#08.01.2012 22:29
+
-
edit
 

Татарин

координатор
★★★★★
Сергей-4030> На моем i7-2600 8 ядер, при этом ядра загружены неравномерно, примерно как во вложении. Почему?
Так идеального-то баланса не достичь.
Или речь, действительно, о том, что ХиперТрединг не используется?
   9.0.19.0.1
UA Sheradenin #09.01.2012 01:32  @Сергей-4030#09.01.2012 01:18
+
+1
-
edit
 

Sheradenin

аксакал

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

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

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

И еще вопрос интересный - откуда вы знаете что операционка не умеет отличать настоящее ядро от виртуального?.
   8.08.0
US Сергей-4030 #09.01.2012 01:41  @Sheradenin#09.01.2012 01:32
+
-
edit
 

Сергей-4030

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

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

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

Когда я запускаю тест, у меня загружаются все ядра. А когда достаточно 2-4 ядер, ОС почему-то загружает их и не передает треды на "совсем свободные" процессоры.
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 01:43  @Sheradenin#09.01.2012 01:32
+
-
edit
 

Татарин

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

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

Я не нашёл, но если было - то это, конечно, неправда. По меньшей мере, в вин7, о чём Микрософт хвалилась весьма отдельно: в первую очередь загружаются реальные ядра. И уж затем, при необходимости, возможности и полезности - HT.
   9.0.19.0.1
US Сергей-4030 #09.01.2012 01:44  @Sheradenin#09.01.2012 01:32
+
-1
-
edit
 

Сергей-4030

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

Я этого не знаю, честно говоря. Я этим не занимаюсь. Но из общих соображений - что значит "настоящее"? Они все виртуальные. "Настоящие" - это когда виртуальных нет, а когда есть, то они все виртуальные, для операционки, вроде как, одинаковые.
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 01:45  @Сергей-4030#09.01.2012 01:41
+
+1
-
edit
 

Татарин

координатор
★★★★★
Сергей-4030> Когда я запускаю тест, у меня загружаются все ядра. А когда достаточно 2-4 ядер, ОС почему-то загружает их и не передает треды на "совсем свободные" процессоры.
"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."
   9.0.19.0.1
US Сергей-4030 #09.01.2012 01:46  @Татарин#09.01.2012 01:43
+
-1
-
edit
 

Сергей-4030

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

По-моему, это не так. По крайней мере, в ранних версиях если уж HT включен, то все процессоры - виртуальные. Чтобы сделать их "реальными" надо отключить HT. В том и смысл HT, что один "реальный" процессор эмулирует два "виртуальных".
   16.0.912.7516.0.912.75
US Сергей-4030 #09.01.2012 01:47  @Татарин#09.01.2012 01:45
+
-1
-
edit
 

Сергей-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."

Это, собственно, незначимое заявление. Я не вижу, про что тут говорится, кроме того, что "мы умницы".
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 01:48  @Сергей-4030#09.01.2012 01:44
+
-
edit
 

Татарин

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

Причём, когда система бежит на реальном железе - это как бы понятно, а вот с новомодными системами виртуализации микрософтовцы помучались. :)
   9.0.19.0.1
US Сергей-4030 #09.01.2012 01:50  @Татарин#09.01.2012 01:48
+
-
edit
 

Сергей-4030

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

Ссылку дадите?
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 02:09  @Сергей-4030#09.01.2012 01:50
+
-
edit
 

Татарин

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

the best one.
Для программиста-прикладника, конечно. Железячников тут всё равно нет. :)
   9.0.19.0.1
Это сообщение редактировалось 09.01.2012 в 02:15
US Сергей-4030 #09.01.2012 03:55  @Татарин#09.01.2012 02:09
+
-1
-
edit
 

Сергей-4030

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

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

If the value of this member is 1, the logical processors identified by the value of the ProcessorMask member share functional units, as in Hyperthreading or SMT. Otherwise, the identified logical processors do not share functional units.
Windows Server 2003 and Windows XP Professional x64 Edition: This member is also 1 for cores that share a physical package. Therefore, to determine whether the processor supports multiple cores or hyperthreading on systems prior to Windows Vista, use the CPUID instruction.
 


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

Википедия говорит, что
For each processor core that is physically present, the operating system addresses two virtual processors, and shares the workload between them when possible.
 
   16.0.912.7516.0.912.75
EE Татарин #09.01.2012 04:09  @Сергей-4030#09.01.2012 03:55
+
-1
-
edit
 

Татарин

координатор
★★★★★
Сергей-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."

Это отсюда - http://download.microsoft.com/download/5/.../Hyper-thread_Windows.doc

(Для соблюдения правил: Windows использует процессоры в порядке их перечисления BIOS в MADT. A Intel производителям БИОС с поддержкой НТ советует перечислять их так: сначала все "первые" всех физических, затем все "вторые")
   9.0.19.0.1
Это сообщение редактировалось 09.01.2012 в 04:15
RU Nikita #09.01.2012 04:25  @Татарин#09.01.2012 04:09
+
+4
-
edit
 

Nikita

аксакал

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

Не тот кусок цитируете. Там дальше идёт описание поддержки HT в Windows XP\2003. И оная как раз включает шедулинг:

the scheduler in the Windows Server 2003 family and Windows XP has been modified to identify HT processors and to favor dispatching threads onto inactive physical processors wherever possible
 
   9.09.0
US Сергей-4030 #09.01.2012 04:28  @Nikita#09.01.2012 04:25
+
-
edit
 

Сергей-4030

исключающий третье
★★
Nikita> Не тот кусок цитируете. Там дальше идёт описание поддержки HT в Windows XP\2003. И оная как раз включает шедулинг:

Да, это, вероятно, объясняет такое поведение. Спасибо.
   16.0.912.7516.0.912.75
US Сергей-4030 #09.01.2012 04:52  @Сергей-4030#09.01.2012 04:28
+
-
edit
 

Сергей-4030

исключающий третье
★★
Nikita>> Не тот кусок цитируете. Там дальше идёт описание поддержки HT в Windows XP\2003. И оная как раз включает шедулинг:
Сергей-4030> Да, это, вероятно, объясняет такое поведение. Спасибо.

Кстати, таки наступает время, когда ядра становятся дешевым ресурсом. :)
   16.0.912.7516.0.912.75
MD Wyvern-2 #09.01.2012 06:18  @Сергей-4030#09.01.2012 01:18
+
+2
-
edit
 

Wyvern-2

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

Даром? %) Судя по вопросам... :D
   9.0.19.0.1
US Сергей-4030 #09.01.2012 07:22  @Wyvern-2#09.01.2012 06:18
+
-1
-
edit
 

Сергей-4030

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

Вау, то есть вы, преуважаемейший Виверн, знали, что

the scheduler in the Windows Server 2003 family and Windows XP has been modified to identify HT processors and to favor dispatching threads onto inactive physical processors wherever possible
 


Знали?
   16.0.912.7516.0.912.75
1 2 3 4 5 6

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru