[freebsd]Как узнать SMT-пары ядер?

Phoenix

dmesg:
CPU: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz (2394.02-MHz K8-class CPU)
FreeBSD/SMP: 1 package(s) x 4 core(s) x 2 SMT threads
 cpu0 (BSP): APIC ID: 0
 cpu1 (AP): APIC ID: 1
 cpu2 (AP): APIC ID: 2
 cpu3 (AP): APIC ID: 3
 cpu4 (AP): APIC ID: 18
 cpu5 (AP): APIC ID: 19
 cpu6 (AP): APIC ID: 20
 cpu7 (AP): APIC ID: 21
И есть ли разница в запуске двух тредах на полностью разных ядрах и на двух SMT в одном ядре?
Я правильно понимаю, что это 4 ядра в каждом по 2 или это 2 блока, в каждом по 4 ядра?

vall

один сокет, четыре ядра, два потока.
разница есть.

Phoenix

что такое поток?

vall

трэд == поток

Phoenix

на каждом из 4 ядер по 2 потока?

vall

да

Phoenix

вопрос о том, как определить, какие CPU сидят в одном ядре остаётся актуальным тогда.

vall

хз, linux эту топологию выдаёт в sysfs

Phoenix

о. точно. Помогло :)
#sysctl kern.sched.topology_spec
kern.sched.topology_spec: <groups>
<group level="1" cache-level="0">
<cpu count="8" mask="0xff">0, 1, 2, 3, 4, 5, 6, 7</cpu>
<flags></flags>
<children>
<group level="3" cache-level="2">
<cpu count="8" mask="0xff">0, 1, 2, 3, 4, 5, 6, 7</cpu>
<flags></flags>
<children>
<group level="5" cache-level="1">
<cpu count="2" mask="0x3">0, 1</cpu>
<flags><flag name="THREAD">SMT group</flag>
</flags>
</group>
<group level="5" cache-level="1">
<cpu count="2" mask="0xc">2, 3</cpu>
<flags><flag name="THREAD">SMT group</flag>
</flags>
</group>
<group level="5" cache-level="1">
<cpu count="2" mask="0x30">4, 5</cpu>
<flags><flag name="THREAD">SMT group</flag>
</flags>
</group>
<group level="5" cache-level="1">
<cpu count="2" mask="0xc0">6, 7</cpu>
<flags><flag name="THREAD">SMT group</flag>
</flags>
</group>
</children>
</group>
</children>
</group>
</groups>

vall

у них что уже xml в ядре? :блюющийсмайлик:

Phoenix

это переменная такая. Сомневаюсь, что есть поддержка xml в ядре.

sergey_m

А где здесь xml?

yolki

ты намекаешь, что раз нет <?xml и нет ссылки на DTD, то это не xml?

sergey_m

Да, в том числе и на это намекаю. Нет не то, что документированной схемы, нет даже намёка на XML - заголовка. Но упоротые уже видят в XML В ЯДРЕ :shocked: А это просто разработчик в дебажную переменную в начало строки вместо табов вставил какой-то тэг, а в конец строки вставил закрытие этого тэга, потому что ему так удобнее. То есть изменился первый аргумент двух snprintf в ядре, а от этого XML В ЯДРЕ не появляется, как мне кажется.

Marinavo_0507

Да, в том числе и на это намекаю. Нет не то, что документированной схемы, нет даже намёка на XML - заголовка.
в порядке флейма
нет чтобы взять настоящий XML - впендюрили кастрированное подобие, отбросив положительные качества оригинала :)

sergey_m

В порядке дискуссии. Правильным решением была бы libkernxml, которая транслировала бы ядрёное бинарное в XML. Причём так как у нас ядро поставляется вместе с миром, появляется возможность всяко ломать ABI между библиотекой и ядром, сохраняя одно и тоже ксмыло на выходе.
Но так как XML не нужен, то в этом направлении движения и нет, есть движение в сторону всяких libmemstat, libprocstat, и т.п.
Оставить комментарий
Имя или ник:
Комментарий: