На всех серверах Безлимитный трафик, защита от DDoS и IPMI включены. Без платы за подключение и контракта. Безлимитный трафик на всех серверах Смотреть цены

Блог · Оборудование

Почему у наших серверов 384, 576 или 1 152 ГБ оперативной памяти

Как каналы памяти DDR5 определяют объём RAM в наших серверах, почему важен один модуль на канал и как рассчитать память для баз данных и виртуальных машин.

  • Инженерная команда FlexDedi
  • 7 мин чтения

Попробуйте на сервере

Pro 32

  • AMD EPYC 9355P · 32 ядра
  • 384 ГБ DDR5-6000 ECC
  • 2 × 3,84 ТБ NVMe Gen5
  • 25 Гбит/с, безлимитный трафик
На этой странице

Если сравнить конфигурации наших серверов, объёмы памяти выглядят непривычно: 384, 576 и 1 152 ГБ вместо 256, 512 или 1 024. Они следуют из того, как процессор работает с памятью, и дают всю пропускную способность, на которую способна платформа.

Коротко о каналах памяти

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

При DDR5-6000 один канал теоретически передаёт до 48 ГБ/с: 6 000 миллионов передач в секунду по 8 байт каждая. Вот что это означает для нашей линейки:

ПлатформаСерверыКаналыТеоретическая пиковая пропускная способность
AMD EPYC 9005, один сокетPro, Max 96, GPU RTX PRO12576 ГБ/с
AMD EPYC 9005, два сокетаMax 192241 152 ГБ/с
AMD EPYC 4005Core, Storage2Шестая часть от одного сокета EPYC 9005 при той же частоте памяти

В реальных приложениях устойчивая пропускная способность ниже этих пиков. Если ваша нагрузка зависит от пропускной способности памяти, измерьте её на сервере с помощью инструмента вроде STREAM.

Один модуль DIMM на канал

Мы устанавливаем в каждый канал ровно один модуль DIMM, и все модули одинаковые. На то есть три причины.

  1. Работает каждый канал. Пропускная способность растёт с числом заполненных каналов, поэтому сокет, у которого заполнены только 8 каналов из 12, выдаёт не больше двух третей пика.
  2. Память чередуется равномерно. Когда везде стоят одинаковые модули, последовательные блоки памяти распределяются по всем каналам. При модулях разного объёма или неравномерном заполнении остаются области, которые чередуются по меньшему числу каналов, и производительность начинает зависеть от того, где оказались ваши данные.
  3. Память работает на полной скорости. С одним модулем на канал платформа работает на максимальной поддерживаемой частоте памяти. Второй модуль в канале обычно вынуждает её снизить.

Поэтому объём памяти набирается кратно 12 модулям на сокет:

СерверМодули DIMMОбщий объём памяти
Pro 3212 × 32 ГБ384 ГБ
Pro 48 и GPU RTX PRO12 × 48 ГБ576 ГБ
Pro 6412 × 64 ГБ768 ГБ
Max 9612 × 96 ГБ1 152 ГБ
Max 19224 × 64 ГБ1,5 ТБ

Модули на 48 ГБ и 96 ГБ собраны на микросхемах памяти плотностью 24 Gb — такая плотность появилась вместе с DDR5. Они заполняют промежутки между объёмами, равными степеням двойки, не нарушая правила «один модуль на канал».

GPU L40S с 256 ГБ рассчитан на другую задачу: на сервере для инференса с одним GPU модель размещается в 48 ГБ памяти видеокарты, поэтому память хоста здесь важна меньше, чем на сервере баз данных.

Два канала в Core и Storage

У процессоров AMD EPYC 4005 в сериях Core и Storage два канала памяти. Поэтому пропускная способность памяти у них намного ниже, чем у серверов Pro, зато частоты очень высокие: boost до 5,4 ГГц, а у Core 16X — до 5,7 ГГц. Кроме того, у Core 16X 128 МБ кеша L3 благодаря 3D V-Cache, так что рядом с ядрами помещается больше горячих данных.

Для игровых серверов, веб-приложений и CI-раннеров, чьи горячие данные в основном помещаются в кеш, частота важнее пропускной способности памяти, и серия Core выгоднее. Для аналитических сканирований, больших наборов данных в памяти и плотной виртуализации выигрывают двенадцать каналов.

Пропускная способность или объём

При подборе памяти нужно ответить на два разных вопроса.

Объём: помещается ли рабочий набор данных? Если нет, система читает с NVMe. Для накопителя это быстро, но каждое обращение занимает микросекунды вместо примерно 100 наносекунд у DRAM — разница в два-три порядка.

Пропускная способность: как быстро ядра могут прокачивать данные? Когда данные уже в памяти, аналитические запросы, колоночные хранилища в памяти, большие сортировки и многие HPC-программы упираются в то, как быстро память их отдаёт.

Если разделить показатели на число ядер, становится виден компромисс в линейке EPYC 9005. Значения пропускной способности — теоретические пики.

СерверЯдраПамять на ядроПиковая пропускная способность на ядро
Pro 323212 ГБ18 ГБ/с
Pro 484812 ГБ12 ГБ/с
Pro 646412 ГБ9 ГБ/с
Max 969612 ГБ6 ГБ/с
Max 1921928 ГБ6 ГБ/с

Pro 32 даёт каждому ядру больше всего пропускной способности — это подходит для требовательных к ней задач, которые плохо масштабируются на много ядер. Серверы Max дают наибольший общий объём памяти и наибольшую суммарную пропускную способность — для нагрузок, которые распределяются по множеству ядер и держат в памяти очень большие наборы данных.

Подбор памяти для баз данных

Цель — держать в памяти часто используемые данные и индексы и при этом оставить место для подключений и операционной системы.

  • PostgreSQL опирается и на собственный буферный кеш, и на страничный кеш операционной системы. Обычная отправная точка — shared_buffers около 25% RAM, а остальное отдаётся страничному кешу. work_mem выделяется на каждую операцию сортировки или хеширования, поэтому при большом числе активных подключений общий расход памяти может многократно вырасти.
  • MySQL с InnoDB на выделенном сервере обычно отдают под innodb_buffer_pool_size от 60 до 75% RAM.
  • Redis хранит весь набор данных в памяти. Оставьте запас для фоновых сохранений: они создают дочерний процесс (fork) и при интенсивной записи могут потребовать значительного объёма дополнительной памяти.

Подбор памяти для виртуальных машин

Для продакшен-хостов сложите память всех ВМ, затем зарезервируйте память для самого хоста и для кеширования хранилища — например, ZFS ARC, если вы используете ZFS. Ballooning и объединение одинаковых страниц памяти позволяют повысить плотность, но гипервизор, которому не хватает памяти, замедляет сразу все гостевые системы.

На двухсокетном Max 192 по возможности держите каждую ВМ в пределах ядер и памяти одного сокета. Для этого в Proxmox VE у каждой ВМ есть параметр NUMA; настройка хоста описана в нашем руководстве по Proxmox.

Как проверить конфигурацию памяти сервера

В Linux можно посмотреть каждый модуль DIMM, его объём и настроенную частоту, а также топологию NUMA:

bash
dmidecode -t memory | grep -E '^\s+(Size|Locator|Configured Memory Speed):'
numactl --hardware

На сервере Pro или Max вы должны увидеть 12 занятых слотов на сокет, и все модули одного объёма.

Чтобы сравнить конфигурации, посмотрите серию Pro и серию Max или прочитайте, что меняет EPYC 9005 в остальных компонентах платформы.

Ваш следующий сервер — через несколько минут.

Закажите Core 16 за $299/мес. или доверьте нашим инженерам подбор парка серверов под ваши задачи.

  • Без платы за подключение
  • Безлимитный трафик
  • Отмена в любой момент