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

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

2 ответа2

2

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

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

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

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

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

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .