В ядре Linux документация для CONFIG_NUMA
говорит:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
У меня есть процессор Intel Core i7, но AFAICT имеет только один узел NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Так в чем же смысл иметь CONFIG_NUMA=y
, когда в i7 есть только один узел NUMA?
источник
CONFIG_NUMA
вcore i7
?Во-первых, обратите внимание, что Intel Core i7 - это просто маркетинговое обозначение, а фраза Intel Core i7 (или более поздняя версия) очень расплывчата. Так что бы это могло значить?
Kconfig
Редактирование текста справки ядра Linux с упоминанием Intel Core 7i , затем исправленное в Intel Core i7 , было сделано в ноябре 2008 года. Журнал фиксации гласит:Это может относиться только к процессорам Intel Core i7, выпущенным или анонсированным к тому времени. Это будут процессоры Bloomfield , основанные на микроархитектуре Nehalem , которые перенесли контроллер памяти из северного моста в ЦП (что AMD сделала в 2003 году с Opteron / AMD64) и представили QuickPath Interconnect / QPI (как подвеска к гипертранспорту AMD) для соединения CPU / CPU и CPU / IOH (IO-концентратор, бывший северный мост).
Процессоры Bloomdale i7 были первыми элементами новой схемы именования Core i {3,5,7} . Поэтому, когда был написан этот документный документ по Linux, i7 конкретно не ссылался на Core i7, в отличие от i5 (сначала в 09/2009) или i3 (сначала в 01/2010), но, по всей вероятности, на новую микроархитектуру Nehalem с его встроенный контроллер памяти и QPI.
Существует пресс-релиз Intel от 11/2008 о i7 ( Intel запускает самый быстрый процессор на планете ), в котором говорится, что процессор Core i7 более чем удваивает пропускную способность памяти предыдущих платформ Intel "Extreme" , но вообще не упоминает NUMA ,
Думаю, причина в том, что NUMA не имеет значения для настольных ПК, даже для «экстремальных».
NUMA имеет значение для дорогих серверов, которые имеют несколько сокетов ЦП (а не только несколько ядер на одном сокете) с выделенными линиями доступа к физической памяти (не только один контроллер памяти), так что каждый ЦП имеет свою выделенную локальную память, которая «ближе» к нему. чем память других процессоров. (Представьте себе 8 сокетов, 64 ядра, 256 ГБ ОЗУ.) NUMA означает, что ЦП может также получать доступ к удаленной памяти (локальной памяти другого ЦП) в дополнение к собственной локальной памяти, хотя и с более высокой стоимостью. NUMA - это синтез архитектуры разделяемой памяти, такой как SMP, где вся память одинаково доступна для всех ядер, и архитектуры распределенной памяти, такой как MPP (Massively Parallel Processing), которая дает каждому узлу выделенный блок памяти. Это MPP, но похоже на SMP для приложения.
Системные платы для настольных ПК не имеют двойных сокетов, а для процессоров Intel для настольных ПК, включая версии для крайних версий i7, отсутствует дополнительная связь QPI для конфигурации с двумя сокетами.
Проверьте статью QPI в Википедии, чтобы увидеть, как QPI имеет отношение к NUMA:
Процессор Intel Nehalem на серверной плате с несколькими сокетами обеспечивает нелокальный доступ к памяти через QPI. Также в статье о NUMA :
Проверьте этот отчет от 11/2008, чтобы увидеть, что Intel отключила одну из двух ссылок QPI на i7, тем самым отключив конфигурацию с двумя сокетами, где применяется NUMA:
Так что я отклоняюсь от вашего вопроса, касающегося моих результатов исследований Google ... Вы спрашиваете, почему документы Linux начали рекомендовать включать его в конце 2008 года? Не уверен, что у этого вопроса есть правдоподобно правильный ответ ... Мы должны спросить доку. Включение NUMA не приносит пользы пользователям настольных процессоров, но также не наносит им значительного вреда, помогая многопользовательским пользователям, так почему бы и нет? Это могло быть обоснованием. Обнаружено, что отражено в дискуссии об отключении NUMA на трекере Arch Linux ( FS # 31187 - [linux] - отключить NUMA из конфигурационных файлов ).
Автор документа также мог подумать о потенциале NUMA в архитектуре Nehalem, единственными представителями которой были процессоры Core i7 11/2008 (920, 940, 965) на момент написания документа; первые чипы Nehalem, для которых NUMA действительно имел бы смысл, - это, вероятно, процессоры Xeon Q1 / 2009 с двойной связью QPI, такие как Xeon E5520 .
источник
Я думаю, что если вы используете
--show
переключатель, это может иметь больше смысла:Таким образом, вы можете контролировать использование Physcpubind следующим образом:
Это ограничит приложение
myapp
первыми двумя ядрами процессора. Моя система - i5 с 4 ядрами.Ссылки
источник
Я исследовал то же самое для своего настольного ПК, собирая свое ядро самостоятельно. Я решил отключить NUMA после долгих исследований. Мой процессор - Core i7 3820, который имеет 8 процессоров с HT. Эта страница помогла мне прийти к моему решению.
отключить NUMA из конфигурационных файлов
Таким образом, NUMA имеет смысл только в том случае, если у вас более 1 сокета процессора (независимо от ядер). Очень слабый удар по вычислительной мощности на машинах с 1 процессорным сокетом даже с несколькими ядрами, но это едва заметно, поэтому большинство дистрибутивов оставляют его включенным, поскольку это даст огромную выгоду серверам и машинам с более чем 1 сокетом.
источник
В ПК с не более чем одним процессором NUMA совершенно бесполезен. Не стесняйтесь отключить его в своем собственном ядре.
Вы всегда можете контролировать связывание ЦП с помощью набора задач (1) .
источник