`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Битва за память. Возможности оптимизации

+66
голосов

Энергозависимость оперативной памяти не останавливает требовательных пользователей. Их цель — низкие задержки обращения к данным, широкая полоса доступа и посильная цена реализации масштабных планов.

В первой части статьи Битва за память. Кто съедает ресурсы? обсуждались серверные приложения с повышенными требованиями к оперативной памяти. Вторая часть посвящена характеристикам оперативной памяти и оптимизации производительности.

От DDR3 к DDR4: приобретения и потери

Технология DDR SDRAM — компьютерный долгожитель. С ее появления в ПК и серверах прошло около пятнадцати лет. Половину этого срока доминировало ее третье поколение DDR3 (а кажется, что целую вечность). Сейчас начался перевод серверных платформ на память DDR4.

Переход на новый стандарт, как правило, происходит в связи с неспособностью продуктов предыдущего поколения справляться с поставленными задачами. Потребность в DDR4 возникла, когда стандарт DDR3 подошел к пределам своих возможностей.

Bandwidth vs Latency

Основные характеристики DRAM — рабочая частота и тайминги. Полоса пропускания (bandwidth) оперативной памяти растет с увеличением тактовой частоты. Но не в одной полосе дело. При обращении к ячейке DRAM контроллер памяти тратит время (latency) на определение номера банка, страницы в нем, номера строки и номера столбца. Тайминги измеряются в тактах. Это задержки между подачей номера строки и номера столбца (время полного доступа, RAS to CAS delay), между подачей номера столбца и получением содержимого ячейки (время полного цикла, CAS delay), между чтением последней ячейки и подачей номера новой строки (RAS precharge).

CAS- и RAS latency измеряются в тактах и по этим показателям DDR4 уступает DDR3. Например, для модулей DDR3-2133MHz типично значение CL11, для DDR4-2133MHz — CL15. Это не означает, что DDR4 будет значительно медленнее DDR3, просто она не будет быстрее при доступе к первой порции данных. Урон от удлинения таймингов смягчается относительно большой встроенной кэш-памятью процессоров.

Основные отличия DDR4 от DDR3:

• Ниже рабочее напряжение (1.05-1.2v у DDR4 против 1.35-1.5v у DDR3)

• Энергосбережение (понижение потребления в режиме сна)

• Выше диапазон эффективных частот шины передачи данных (от 2133 до 4266 MHz в будущем)

• Выше плотность исполнения (до 2GB на чип и 64GB на один серверный модуль)

Битва за память. Возможности оптимизации

DDR4 работает на более высоких эффективных частотах шины передачи данных, что увеличивает полосу пропускания (bandwidth). Но ее тайминги по тактам сравнимы или хуже, чем у модулей памяти DDR3. Ничего необычного в увеличении таймингов доступа нет, так было и при переходе от DDR2 к DDR3. Явного превосходства DDR4 пока нет, оно появится в будущем, по достижению более высоких частот.

Говоря о переходе на стандарт DDR4, не всегда обращают внимание на важный момент: латентность DDR4 относительно DDR3 возросла. Это хорошо видно, если смотреть не на декларируемую эффективную частоту работы шины передачи данных между RAM и CPU (для DDR4-2133 она составляет 2133 МГц), а рабочую частоту самих ячеек хранения данных в SDRAM.

В новой и потенциально «более производительной» памяти DDR4-2133 ячейки хранения данных работают на частоте 133 МГц, в то время как у старой и «менее производительной» DDR3-1866 ячейки работают на 233 МГц (почти в 2 раза быстрее). Соответственно, физическая латентность и у ячеек хранения данных у DDR3-1866, и у самой планки памяти DDR3-1866 будет почти в 2 раза ниже, чем у DDR4-2133. И только в DDR4-3732 будет достигнут тот же уровень латентности SDRAM, который демонстрирует DDR3-1866.

По состоянию на сегодня модули DDR4 в полтора раза дороже аналогичных по емкости модулей DDR3. С ростом спроса цены упадут, но пока что сервер на процессорах Intel Xeon 26xx v3 со 128GB памяти DDR4 обойдется примерно на $1000 дороже предшественника на Intel Xeon 26xx v2 — только за счет разницы цен памяти. Оправдан ли переход на DDR4, и ждать ли скачка производительности в реальных серверных приложениях?

В классах задач, требовательных к латентности RAM (транзакционные, или OLTP-базы данных, системы с интерпретацией кода — как 1С:Предприятие 8, Java, javascript, php), ожидать немедленного эффекта за счет перехода к DDR4 не стоит. В различных аналитических системах (OLAP), в обработке/трансляции потоковых медианных, а в ряде случаев и в среде виртуализации шанс прироста производительности есть — если прикладное ПО умеет использовать широкую полосу пропускания. До выхода DDR4-3200 ситуация вряд ли изменится.

С другой стороны, переживать из-за длинных таймингов тоже не следует — более высокая латентность первого обращения к данным в DDR4 компенсируется большим объемом кеша в современных CPU и алгоритмами предвыборки данных (блочного считывания данных из RAM в кеш CPU «впрок»). Да и современное серверное ПО (СУБД, системы виртуализации) оптимизируется под потоковую работу с данными, максимально используя SIMD инструкции CPU.

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

UDIMM, RDIMM и LR DIMM

В серверах начального уровня используется память unbuffered DIMM (UDIMM). Контроллер памяти CPU обращается ко всем чипам модулей памяти индивидуально и параллельно. Емкостное сопротивление чипов ослабляет высокочастотный сигнал в каждом канале контроллера памяти, ограничивая число модулей на канал и общий объем памяти (64GB на процессор для DDR3)

Большой объем RAM в сервере набирают модулями RDIMM (Registered DIMM). Регистры такой памяти буферируют адресный и командный сигналы, что для памяти DDR3 утраивает пределы до 192GB на процессор (4 канала по 3 модуля на канал по 16GB). Естественно, регистровая память RDIMM имеет немного худшие характеристики по таймингам, чем UDIMM, но для серверных задач это практически не имеет значения (чуть замедляется доступ к первой порции данных, на 1-2 такта).

В памяти LR DIMM (Load Reduced DIMM) вместо регистров стоит буфер памяти, изолирующий электрическую нагрузку (сигналы данных, адресов и команд) от контроллера памяти процессора. Контроллер видит этот буфер, а не индивидуальные чипы. Это позволяет довести максимальный объем модуля DDR3 до 64GB и отдать до 768GB на процессор. Оборотная сторона медали —увеличение таймингов (расходуется на 1-3 такта больше). При одинаковом объеме модули LR DIMM DDR3 почти вдвое дороже RDIMM DDR3 — и мотивов использования LR DIMM DDR3 почти ни у кого не возникало.

Первые образцы LR DIMM DDR3 работали на пониженных частотах самих ячеек памяти (по сравнению с RDIMM DDR3) и имели на 2-3 такта выше латентность. Суммарно это приводило к более высокой латентности работы с памятью — порядка 10-20%.

Современные LR DIMM DDR3 имеют те же значения по частотам работы ячеек памяти, что и RDIMM DDR3 — 1333-1866MHz. И тот же диапазон латентности — CL 11-13.

У RDIMM DDR4 и LR DIMM DDR4, и частоты одинаковы, и диапазон латентности тот же: CL 13-15. Таким образом, выбор более дорогих LR DIMM DDR4 или более дешевых RDIMM DDR4 определяется бюджетом и потребностями в объеме RAM, но ощутимой разницы в производительности не несет.

При добавлении регистров или буферов в память реальная частота ячеек памяти остается неизменной. Для единичных запросов увеличивается латентность, зато при работе с большими выборками данных в RAM появляется перспектива прироста производительности при групповых запросах. Различия в латентности и пропускной способности DDR4 между аналогичными LR DIMM и модулями RDIMM довольно малы, и будет почти невозможно заметить какие-то ощутимые эффекты в реальных приложениях.

У современных процессоров довольно большой объем встроенной кеш-памяти, принимающей на себя обращения к часто адресуемым блокам RAM. Благодаря ей производительность в большинстве приложений со случайной адресацией ячеек памяти не ухудшится при переносе их на системы с DDR4, с ее удлиненными таймингами, как и при переходе с RDIMM на LR DIMM. Для потоковых приложений — как доставка контента, GPU-облаков с визуализацией и аналитических систем Big Data запас объема доступной оперативной памяти DDR4 до 784GB RDIMM или 1.5TB LR DIMM несет только расширение поля возможностей.

Влияние типов модулей памяти и их количества

Наличие высокочастотных модулей RAM в сервере не гарантирует, что вся DRAM в системе будет работать на максимальной для модулей частоте.

В качестве примера рассмотрим таблицу из описания материнской платы Intel Server Board S2600WT раздел «4.4 Supported Memory»:

Рост мирового рынка ПО для хранения данных превысил 6%

При установке только одной планки памяти в канал DDR4-2133 эта самая планка будет обеспечивать максимальную скорость передачи данных в 2133 MT/s, иными словами, работать на эффективной частоте в 2133 MHz. Установка 2-й планки RDIMM приводит к тому, что обе планки будут работать на эффективной частоте 1866 MHz, установка 3-й планки снижает эффективную частоту до 1600 MHz. Чуть лучше ведет себя LR DIMM — при установке 2-х планок LR DIMM DDR4-2133 в канал по-прежнему сохраняется эффективная частота 2133 MHz, и только с установкой 3-й планки LR DIMM DDR4-2133 эффективная частота всех планок памяти в канале падает до 1600 MHz.

Подобные показатели специфичны для данной материнской платы. У другой модели материнской платы 2 планки RDIMM могут работать на максимальной эффективной частоте, и только с установкой 3-й эффективная частота будет падать. Если нужно получить сервер с RAM максимальной производительности, стоит предварительно ознакомиться со спецификацией конкретной материнской платы и определиться с объемом памяти, количеством планок и предельной эффективной частотой (которая также зависит и от установленного процессора).

Кеширование в оперативной памяти

Уровни кеширования SQL-сервера:

1. SQL Cache в RAM, на чтение и запись данных (группировка в пакеты)

2. Кеш ввода/вывода в ОС, тоже в RAM

3. Кеш файловой системы, как правило, в RAM, в некоторых файловых системах сбрасывается на диск

4. Буфер чтения-записи RAID-контроллера. В аппаратных реализациях с защитой батарейкой/флеш-модулем находится на контроллере, в программных и полупрограммных RAID на бортовых портах материнской платы под кеширование чтения/записи используется RAM

5. Кеш на HDD/SSD — если он включен

В долгой дороге данных до физических носителей оперативная память играет важную роль, снижая или сглаживая нагрузку на подсистему I/O.

Современные приложения, операционные системы, файловые системы, драйвера многих устройств (сетевых карт и различных HBA) умеют эффективно использовать свободную RAM для буферизации операций ввода/вывода.

Идея кеширования в RAM стара как ... RAM. Во времена, когда скорость обращения к постоянным устройствам хранения измерялась десятками миллисекунд, перенос даже небольшого объема данных с HDD в память давал радикальный скачок производительности.

Современные техники кеширования в оперативной памяти стали изощреннее. С одной стороны, подтянулись носители. Благодаря низким задержкам и умеренной цене кеширование на SSD конкурирует с кешированием в RAM в транзакционных приложениях. Что еще важнее, в большинстве движков баз данных кеширование в RAM уже реализовано. Это логично — ведь они располагают полной информацией о движении данных, для избирательного, а не тотального кеширования I/O. Например, кешируются индексы, но не записи лог-файлов — тогда как базовые алгоритмы сквозного (write-through) кеширования не способны различать типы данных.

RAM Drive

Технологии RAM Drive — упомянутого использования быстродействующей оперативной памяти как блочного устройства (диска) — применяются десятилетиями. Они реализуются средствами ОС или программами сторонних производителей. Достоинства памяти как устройства хранения данных (крайне низкие задержки, большая полоса пропускания, реализация без дополнительных аппаратных компонентов, практически неограниченный ресурс) перевешивают недостатки (потеря содержимого при обесточивании) — при подстройке архитектуры приложений и инфраструктуры в целом.

Для владельцев крупных баз данных под 1С:Предприятие 8 с высокой вычислительной нагрузкой на tempDB (производство, логистика, обмены с периферийными БД, расчет з/п) стало привычным размещение tempDB не на HDD и даже не на SSD, а именно на RAMDrive. Такой прием позволяет ускорить в разы выполнение операций, связанных с обработкой данных из различных таблиц. Общую производительность системы 1С иногда удается поднять на 10-15%.

Риски такого приема минимальны — ведь утрата tempDB (например, в результате нештатного отключения питания) не критична. Прямые выгоды окупают гипотетические потери от небольшого простоя: при рестарте сервера в RAM создается этот самый Drive, временные таблицы генерируются заново.

Актуальности RAM drive добавляет относительная дешевизна DRAM и увеличение адресного пространства памяти в современных массовых платформах.

Новый импульс использованию RAM Drive дало появление доступных средств синхронной и асинхронной репликации данных. Они встроены в Microsoft Windows Server 2012, и еще более развиты в среде Linux. При достаточном объеме RAM физического узла всю базу данных можно разместить непосредственно на RAM Drive, настроив репликацию на физические диски (к примеру, SSD) или даже удалённый узел. Кроме высочайшего быстродействия, такая архитектура позволяет защитить данные от несанкционированного доступа вследствие физического изъятия сервера или хранилища данных. RAM Drive можно и зашифровать.

 

Оперативная память в многоуровневых файловых системах

Cозданная в Sun Microsystems для ОС Solaris файловая система ZFS (Zettabyte File System) — пример современного подхода к обслуживанию больших объемов данных. ZFS объединяет роли файловой системы и менеджера логических дисков, обеспечивая простое управление томами хранения, с высокой скоростью доступа к данным и контролем их целостности. В ZFS реализована трехуровневая архитектура хранения:

1. RAM

2. Кеши чтения и записи на SSD

3. (Недорогие) HDD

Благодаря гибридным пулам хранения RAM/SSD/HDD системы под управлением ZFS оказываются быстрее и дешевле традиционных HDD-хранилищ.

ZFS активно использует RAM в качестве Read Cache Pool и способна утилизировать всю имеющуюся в системе оперативную память под эту задачу. Как и в большинстве файловых систем, в ZFS применяется модель L1ARC (Adaptive Replacement Cache), при которой кеш на чтение находится в оперативной памяти. Разумеется, после каждого сбоя по питанию и перезагрузки уходит время на его восстановление для оптимизации производительности.

«Hand-made» tiering

Трехуровневую архитектуру с использованием RAM как ближнего слоя I/O иногда закладывают в логику работы высоконагруженных приложений, от которых требуется низкая латентность получения данных. Пример — сайты коммерческих объявлений. В оперативной памяти размещают краткий текст и небольшие фотоизображения для максимально быстрой выдачи по запросу, на массиве SSD — полный текст и фотографии среднего размера, на массиве HDD — фото высокого разрешения, связанные тексты, дополнительная информацию, служебные данные. Такой «рукотворный» подход дает хорошее соотношение времени отклика системы и цены реализации.

В ZFS также реализована L2ARC, позволяющая использовать любые устройства, улучшающие производительность чтения — как NVMe SSD. Есть в ZFS кеширование на запись в RAM — ZIL («ZFS intent log», или «ZFS журнал намерений»).

Оперативная память расходуется в таких системах и под сопутствующие сервисные функции: дедупликацию (распознавание и сохранение одного экземпляра среди повторяющихся фрагментов данных), thin provisioning (создание и динамическое расширение логических томов, которые изначально используют немного места, но «растут» по мере записи в них данных). Эти полезные функции требуют большого объема RAM для своей работы.

Можно сказать, Microsoft идет тем же путем — очень близким набором сервисных функций обладает встроенная в Windows 8 и Windows Server 2012 технология Storage Spaces. Пусть Spaces не позволяет непосредственно назначить RAM слоем хранения, оперативная память там активно используется для дедупликации, thin provisioning, восстановления после сбоев.

Пирамида хранения

Многоуровневые системы хранения данных обычно представляют в виде слоеной пирамиды, а движение данных в их жизненном цикле описывают в температурных терминах «горячего-холодного». Активных операционных данных (верхушка пирамиды), как правило, немного, но именно в критичных к I/O приложениях ведутся битвы за ресурс оперативной памяти. «Остывающие» данные оседают к основанию пирамиды — тем ниже, чем меньше их востребованность и требования к доступности.

Протокол NVMe устраняет потери на промежуточных звеньях, обходясь без посредничества SAS/SATA-интерфейса. NVMe-устройства не используют стек команд SAS и подключаются прямо в шину PCI-express, что радикально ускоряет обращение CPU к данным. NVMe SSD и гибридные устройства NVRAM (RAM + flash) находят место в критичных к задержкам I/O корпоративных приложениях.

Из постоянных носителей выше всего в пирамиде хранения находятся SSD. Они вытеснили HDD c вершины пирамиды, из продуктивного слоя данных. Этим не закончилось — уж очень велик зазор между задержками доступа к RAM (до ста наносекунд) и к постоянным носителям (десятки микросекунд плюс миллисекунды на посредниках-интерфейсах). Дальнейшее снижение задержек обращения к SSD обещает cпецификация NVMe (Non-Volatile Memory express), из которой исключена поддержка стека команд SAS. Устройства NVMe напрямую подключаются к шине PCI express как основной магистрали движения данных.

С другой стороны, ценность ресурса RAM подкрепляется развитием техник кеширования и сервисных служб репликации данных. Эпидемия облачных приложений только ускорила процесс вовлечения ее больших объемов в инфраструктуру обслуживания.

И все же, RAM энергозависима (volatile memory). В пирамиде ее всегда будут подпирать слои постоянных и гибридных носителей, приводя устойчивую многоуровневую инфраструктуру хранения к такому виду:

Битва за память. Возможности оптимизации• Оперативная память

• NVMe SSD и сборки RAM/SSD (NVRAM)

• Массивы SSD

• HDD в различных сочетаниях объема/скорости вращения

• Магнитная лента для ретро-архивов

Заключение

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

Этот материал не претендует на обзор рецептов по утилизации оперативной памяти большого объема. Актуальна сама идея — посильной оптимизации, не требующей ничего, кроме рядовых серверов и разумной архитектуры приложений.

+66
голосов

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT