2 процессора сервера и оперативной памяти

942
Roey Nissim

Я нахожусь в процессе покупки сервера Dell T620 с двумя процессорами E5-2660v2 и 128 ГБ оперативной памяти. Dell сказала мне, что если я заказываю 128 ГБ оперативной памяти, мне нужно 64 ГБ на процессор. Почему это?

Допустим, я запускаю один процесс на всех 20 ядрах, который загружает в память 40 ГБ данных и обрабатывает их. Нужно ли загружать данные дважды (по 1 на процессор)? Если так, как бы я это сделал? Если нет, то каким образом разделение памяти влияет на компьютер?

0
Спросите представителя Dell, что он имел в виду под 64 ГБ на процессор. В общем, если вы загружаете одну ОС, то все 128 ГБ должны быть доступны для ОС. Процессорам не назначается отдельная оперативная память Ganesh R. 10 лет назад 1
Это связано с тем, как устроена платформа Xeon. Каждый процессор имеет свой собственный контроллер памяти. Ramhound 10 лет назад 0
@Ramhound так как это влияет на машину? следует загрузить данные дважды, и если да, то как? Roey Nissim 10 лет назад 0
Система не знает, есть два контроллера памяти. Также не осознается тот факт, что есть два процесса. Он только знает, сколько ядер потоков он имеет доступ. Ramhound 10 лет назад 0
@Ramhound, так что в принципе это не должно влиять на мое программирование, и у меня будет 20 ядер с 128 ГБ ОЗУ, верно? Roey Nissim 10 лет назад 0
@ RoeyNissim - я чувствую, что я был довольно ясно с моими заявлениями. Если вам интересно, как работают несколько процессоров на платформе Xeon, я предлагаю провести небольшое исследование по этому вопросу. Ramhound 10 лет назад 0

2 ответа на вопрос

2
Paul A. Clayton

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

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

Во-вторых, в некоторых системах скорость интерфейса памяти может быть ограничена количеством модулей, подключенных к каналу памяти, поэтому использование одного модуля на канал (с вдвое большим числом процессоров и, таким образом, вдвое большим количеством каналов) может обеспечить более высокую пропускную способность. Кроме того, количество модулей памяти, поддерживаемых одним процессором, может заставить более дорогой модуль обеспечить одинаковую общую емкость системы.

В-третьих, если рабочая нагрузка выигрывает от распространения обработки на другой процессор (например, большое количество потоков или меньшее количество потоков, которые получают выгоду от большей емкости L3 на поток), больше, чем она теряет из-за большей задержки (и, возможно, более низкой пропускной способности) некоторого доступа к памяти, идущего на другой процессор, то даже без значительной оптимизации выделения памяти ОС (оптимизация NUMA [Non-Uniform Memory Access], выделение памяти и планирование потоков так, чтобы память, присоединенная к процессору потока, использовалась чаще), производительность может быть выше. С существенной оптимизацией NUMA (которая не может быть практичной для рабочей нагрузки), большинство обращений к памяти было бы к более быстрой, локальной памяти.

Только на двух узлах репликация памяти вряд ли будет выполнена, поскольку коэффициент NUMA (насколько медленнее удаленная память по сравнению с локальной памятью) невелик. Если память для определенного доступа подключена к удаленному процессору, запрос будет передаваться через межпроцессорное соединение (QPI для Intel) к контроллеру памяти удаленного процессора (хотя возможно попадание в кэш в L3 этого процессора) и контроллеру памяти (или Кэш L3) будет удовлетворять запрос, отправляющий данные запрашивающей стороне через межпроцессорное соединение.

(Система с большим количеством узлов / процессоров может выиграть от дублирования содержимого памяти ОС, которое невозможно записать. Некоторые операционные системы даже использовали миграцию (перемещение содержимого памяти на другой узел) в качестве оптимизации NUMA.)

Спасибо за отличное объяснение, но я не могу понять, какое влияние это окажет на мою программу? Могу ли я просто предположить, что у меня 20 ядер с 128 ГБ, и пусть оборудование и ОС справятся с этим? Roey Nissim 10 лет назад 0
@RoeyNissim Как пытались объяснить от 2-го до последнего параграфа, аппаратные средства управляют доступом к удаленной памяти. ОС может попытаться уменьшить количество удаленных обращений к памяти (и может предоставить интерфейс для приложений для предоставления информации о соответствии процессоров). Приложения могут быть разработаны для NUMA (что также может иметь преимущества кеша), но приложения, не оптимизированные для NUMA, будут работать правильно (и ОС может несколько оптимизироваться) и, как правило, будут подвергаться лишь небольшому (например, <2%) снижению производительности в маленькая система. В общем, пусть ОС переживает за такие сложности. Paul A. Clayton 10 лет назад 0
0
Alan

Это связано с архитектурой Intel. Память должна быть поровну распределена между всеми процессорами, поэтому в каждом случае вы устанавливаете 64 ГБ памяти на каждую процессорную шину. Операционная система по-прежнему видит все 128 ГБ памяти, но память распределяется между двумя процессорами.

Также важно, чтобы память на CPU1 физически совпадала с памятью на CPU2. Например, если у вас есть память в слотах A1, A2 и A3 (A подключается к CPU1), то вам нужен точно такой же тип / спецификации памяти в слотах B1, B2 и B3 (B подключается к CPU 2). Если вы этого не сделаете, CPU2 не будет подключен к сети.

Вот почему в наши дни задействуется 2 ЦП вместо одного ЦП в двухпроцессорной системе. Если у вас только 1 процессор, то использовать память, подключенную к слотам B, невозможно.

Похожие вопросы