Тестирование
Итак, первое, с чего мы начнём — это посмотрим, что даёт отключение ECC в BIOS-е. Технически, коррекции ошибок выполняет регистровый чип, поэтому не думаю, что мы получим какую-то разницу в скорости.
Синтетика и реальная задача показали диаметрально противоположные результаты. В AIDA64 задержка чуть выросла, а в базе данных — наоборот, снизилась.
Следующим этапом включим ADR, аппаратное асинхронное обновление DRAM, — функция, предназначенная для энергонезависимой памяти NvDIMM. При её включении, контроллер памяти запускает аппаратное прерывание и автоматически обновляет страницы памяти, содержащиеся в модулях DRAM. Это позволяет поддерживать актуальность информации, хранящейся в памяти на случай отключения питания. Для обычной памяти RDRAM оно не должно иметь никакого значения.
Я бы даже сказал, что эта функция тормозит работу подсистемы памяти, так что включать её не следует.
Зеркалирование RAS Mirror — функция, предназначенная для создания избыточности на уровне банков памяти. Здесь можно провести аналогию с RAID 1 для жёстких дисков: контроллер разделяет общий объём ОЗУ на 2 канала, один из которых дублирует второй. В случае если в одном из каналов произошло повреждение данных, контроллер восстанавливает данные из второго канала. В отличии от полного зеркалирования, RAS Mirroring требует поддержки со стороны операционной системы, которой на этапе загрузки надо сообщить, какой именно объём памяти будет работать в отказоустойчивом режиме. Допустим, у вас 128 Гб памяти — вы можете включить зеркалирование адресного пространства до 4 Гб и 20 Гб адресного пространства выше 4 Гб. Таким образом, общий доступный объём памяти для операционной системы составит 113 Гб, но память, занятая ядром ОС будет защищена от невосстанавливаемых ошибок, что повысит надёжность работы сервера.
Если же не трогать настройки операционной системы, то включение RAS Mirror в BIOS ничего не даст, кроме небольшого снижения производительности.
Ещё одной разновидностью защиты от сбоя является Rank Sparing. В отличии от RAS Mirror, это полностью аппаратная функция, суть которой в том, что половина объёма памяти держатся в резерве на случай сбоя в основном канале памяти. В случае возникновения восстанавливаемой ошибки в модуле DIMM, его содержимое копируется в запасную память, а сбойный ранг или целиком DIMM модуль отключается. Для операционной системы в случае включения Rank Sparing, доступно ровно половина общего объёма ОЗУ.
То есть, если RAS Mirror способен защитить от ошибки в памяти и не допустить зависания операционной системы, то Rank Sparing действует уже после того, как ошибка обнаружена и предотвращает использование сбойного модуля DIMM. Как видно по результатам тестов, включение этой функции негативно влияет и на синтетический тест, и на реальное приложение.
Ручное выставление чередования каналов и рангов. У меня нет никаких сомнений, что BIOS автоматически определяет оптимальный режим чередования рангов и каналов памяти для максимальной производительности. У нас в сервере установлены дв двухранговых модуля, так давайте для них зададим вручную значение 2 Channel Interleaving + 4 Rank Interleaving.
Небольшое влияние на производительность есть, но оно находится в пределах погрешности.
Несимметричный третий канал
В начале статьи было сказано, что есть дескать рекомендация ставить в сервер все модули памяти одинакового объёма, одного производителя и так далее и тому подобное. Давайте добавим к нашим двум модулям Transcend TS1GHR72V4H объёмом по 8 Гб каждый, ещё один 2-ранговый 16-гигабайтный модуль Kingston KVR21R15D4/16. Теоретически, у нас должны задействоваться 3 канала памяти, что даст значительный прирост в быстродействии системы.
Синтетика показывает, что все слухи об одинаковости модулей памяти в разных каналах не стоят и сломанного цента — три канала дают огромный прирост в скорости памяти по сравнению с двумя. Но практика показывает, что от такого прироста толку — ноль, и это самое лучшее время подвести итоги нашей статьи.
Модули памяти Transcend TS1GHR72V4H
В регистровых модулях памяти RDIMM, связь между контроллером ОЗУ, установленным в процессор и чипами DRAM на планке памяти осуществляется напрямую, и лишь адресные и командные сигналы буферизуются в дополнительном чипе, установленном на плашке памяти, называемом регистром. Такая компоновка позволяет производить 4-ранговые модули памяти для использования в серверах с 12 и большим количеством слотов DIMM. Говоря проще, регистр позволяет установить больший объём памяти в один сервер.
Модуль памяти TS1GHR72V4H — это 2-ранговый DDR4 2400 DIMM. Объём набран 16 микросхемами SEC 725 серии K4A4G08 5WE BCRC производства Samsung. Эти чипы относятся к поколению E-die, которое само по себе рассчитано на частоты выше 3000 МГц, то есть на плашках памяти DDR4-2400 эти чипы, можно сказать, «отдыхают».
Основная задержка CAS составляет 17 тактов, рабочий диапазон температур — от 0 до 85 градусов Цельсия, хотя по нашим тестам, как будет показано далее, память не нагревается и наполовину максимально допустимых значений.
Что же делать?
Если нам нужно выжать максимум из подсистемы памяти, то надо заниматься не настройками BIOS-а, а настройками гипервизора, в частности — распределением ресурсов vCPU между виртуальными машинами. Рекомендованные значения не всегда окажутся лучшими с точки зрения производительности, и если физических процессорных ядер меньше, чем выделено гостевым операционным системам, то правило «больше = лучше» уже не работает, и оптимальное соотношение ресурсов устанавливается опытным путём.
Очень интересно выглядит тест AIDA64, достаточно лёгкий для сервера, — он не использует дисковую подсистему от слова «совсем». Но при конфигурации 6 vCPU для Windows 7, у нас ещё 2 vCPU выделены под FreeNAS, который находится в состоянии простоя. Тем не менее, мы видим ощутимый удар по подсистеме памяти, и это — как раз и есть плата за Overprovisioning виртуальных процессорных ядер. 99-процентная задержка в OLTP показывает, что в реальных приложениях снижение производительности так же имеет место быть.
Выводы
Любой IT-администратор знает, что с выходом DDR4, влияние скорости памяти на производительность компьютера стало очень высоким. В игровых ПК и десктопах правильным подбором модулей ОЗУ можно выжать 10-15% в играх или ресурсоёмких приложениях типа Photoshop. Но в серверах, которые не дают разгонять частоту ОЗУ, нет никакого смысла заморачиваться и пытаться повысить скорость подсистемы памяти. Даже дополнительный канал памяти даёт меньший прирост скорости, чем правильная конфигурация виртуальной машины.
Поэтому выбирая RDIMM модули для вычислительного узла, можно просто брать плашки памяти Transcend TS1GHR72V4H с пожизненной гарантией. Эти модули прекрасно себя чувствуют на частотах ниже 2400 МГц, так что можно брать в расчете на модернизацию сервера. Встроенный термосенсор определяется BIOS-ом и аппаратным мониторингом операционной системы, режим энергосбережения не сказывается на производительности машины, но стопроцентно позитивно влияет на срок службы памяти.
Мы благодарим компанию Transcend за предоставленную память.