За все время существования теории вычислительных машин и систем справедливым оставалось одно утверждение: процессоры гораздо более производительные и дорогие, чем устройства хранения данных. Тот факт, что CPU способен обслуживать множество запоминающих устройств разом, оказал значительное влияние на разработку аппаратного и программного обеспечения для систем самых разных размеров.
Действительно, в таких книгах, как «Вычислительные системы: взгляд программиста» («Computer Systems: A Programmer's Perspective») Рандала Брайанта (Randal Bryant) и Дэвида О'Халларона (David O'Hallaron) делается упор на иерархию памяти и её влияние на разрабатываемые программы.
Однако дата-центрам и разработчикам ПО нужно готовиться к грядущим изменениям. Появление высокоскоростных энергонезависимых устройств хранения информации, обычно называемых аббревиатурой SCM (Storage Class Memories), пошатнет привычные устои. SCM постепенно набирают популярность, однако для работы с ними требуется выделять один или сразу несколько многоядерных процессоров, чтобы совладать с их производительностью (сотни тысяч IOPS).
Скорость работы долговременных хранилищ всегда была сильно ниже, чем скорость работы CPU, и эта разница только увеличилась за период с начала 90-х до начала 00-х годов. Процессоры стабильно улучшались и совершенствовались, а производительность механических дисков оставалась неизменной – развитию препятствовала физика. На протяжении десятилетий, чтобы сократить этот разрыв и избежать простоев процессора, придумывались различные схемы и методики.
Одним из способов является кэширование. В современных системах кэширование выполняется на всех системных уровнях: процессор кэширует RAM, операционные системы кэшируют целые дисковые секторы и так далее.
Другие способы позволяют в буквальном смысле разменять процессорное время на производительность. Например, сжатие и дедупликация уменьшают размеры обрабатываемых данных, и получается, что «быстрая» память как бы увеличивается в размерах, но за это приходится платить вычислительными ресурсами.
Сжатие остается основной техникой, используемой в системах хранения корпоративного уровня, а также средах, работающих с большими данными. Такие инструменты, как Apache Parquet реорганизуют и сжимают данные на дисках, чтобы уменьшить время чтения.
От всех этих недостатков освобождены флеш-хранилища. Эта технология не нова, а SAS и SATA SSD можно приобрести уже лет десять как. Однако SCM переводит флеш-устройства на новый уровень: флеш-память подключается к PCIe-шине, вместо медленных шин SAS и SATA, что увеличивает скорость обмена данными.
Более того, зарождаются такие SCM, как например NVDIMM. NVDIMM производится в виде DIMM-модулей и, по сути, представляет собой гибридную память, объединяющую оперативную память DRAM и флеш-память NAND.
В обычных условиях модули NVDIMMвыполняют функцию обычной DRAM-памяти, но в случае сбоя или выключения системы данные из DRAMперемещаются в энергонезависимую флеш-память, где могут храниться неограниченно долго. Когда компьютер возобновляет работу, данные копируются обратно. Такой подход позволяет ускорить процесс запуска машины и снизить вероятность потери важных данных.
На сегодняшний день SCM с интерфейсом PCIe позволяют добиться увеличения производительности в 1000 раз (100k IOPS против 100 IOPS). К сожалению, это ведет к значительному увеличению в стоимости: SCM стоят в 25 раз дороже обычных HDD ($1,50/ГБ против $0,06/ГБ). Устройства корпоративного класса стоят от $3000 до $5000 каждое.
Чтобы максимизировать эффективность использования дорогих SCM, системы хранения должны постоянно обеспечивать их работой, то есть держать их занятыми. Получается, что мы не можем просто заменить магнитные диски – нам придется перерабатывать аппаратные системы и программное обеспечение.
К этому вопросу нужно подходить осторожно, поскольку слишком большое количество флеш-устройств приведет к значительным затратам денежных средств, а слишком малое их количество – к сложностям обращения к ним. Найти правильный баланс не так уж и просто.
Также стоит помнить и о временном разделении ресурсов. На протяжении многих лет для взаимодействия жесткого диска и процессора использовались прерывания. Для ядра, работающего на частотах, измеряемых гигагерцами, не составляет труда обслужить прерывание каждые несколько секунд. Одно ядро может управлять десятками или сотнями дисков, не рискуя «захлебнуться». Однако с появлением низколатентных устройств хранения этот подход больше неприменим.
Эта модель должна серьезно измениться. Серьезный прирост в производительности получили не только устройства хранения данных – ускорение работы сетевых устройств также имело место: сначала до 10G, потом до 40G, затем до 100G. Может удастся «подсмотреть» решение в этой сфере?
Однозначного ответа дать не получится, поскольку слишком велика разница в ускорении: сети стали быстрее в тысячу раз, а запоминающие устройства – в миллион. Более того, при работе с памятью часто приходится поддерживать сложные функции сжатия, кодирования и дедупликации, потому методики оптимизации, применяемые для работы с пакетами, скорее всего, не подойдут.
В сетях для снижения латентности применяется способ, когда всеми пакетами управляет приложение в обход ядра. Однако между сетями и устройствами хранения данных есть разница: сетевые потоки независимы и могут обрабатываться параллельно на нескольких ядрах, в случае ЗУ все запросы придется координировать.
Очевидно, что это непрактично. Один контроллер неспособен управлять доступом к огромному количеству SCM-устройств одновременно. Аппаратное обеспечение будет использоваться в пол силы, потому нужен иной подход.
Требования нагрузки к емкости и производительности не совпадают с аппаратными возможностями, что ведет к ограничениям в использовании высокоскоростных дисков. Например, данные объемом 10 ТБ с ожидаемой нагрузкой в 500k IOPS задействуют лишь половину возможностей дисков, если будут храниться на SCM-устройствах объемом в 1ТБ, способных обрабатывать до 100k IOPS каждый.
Однако нужно помнить о том, что большая часть данных не является «горячей», поэтому неэффективно хранить их все на высокоскоростных флеш-устройствах. Во многих случаях нагрузка согласуется с распределением Парето: 80% всех обращений адресовано 20% данных.
Гибридная система с различными уровнями хранилищ (с различными характеристиками производительности) является хорошим решением для смешения «холодных» и «горячих» данных, когда SCM-устройства выступают в качестве кэша для медленных дисков. Но нужно помнить, что шаблоны доступа со временем изменяются – надо своевременно на это реагировать и перемещать данные.
В грамотно построенных системах такой способ позволяет эффективно использовать аппаратное обеспечение без снижения производительности. Однако системы должны иметь гибкие политики, которые бы запрещали активным, но низкоприоритетным задачам вмешиваться в работу бизнес-критических приложений. Грамотная реализация и отладка этих механизмов – это совсем не тривиальная задача.
Так что же нас ждет в будущем?
Как было сказано выше, уже есть разработанные SCM-устройства. PCIe SSD – наиболее известный тип SCM и уже оказал значительное влияние на инфраструктуру дата-центров. Вторым примером может служить NVDIMM, которая имеет характеристики производительности, сравнимые с DRAM. Такие устройства уже доступны сегодня и продолжают развиваться.
SCM-технологиями занимается компания HP. Их проект под названием The Machine не что иное, как попытка разработать новую компьютерную архитектуру на мемристорах. Существование мемристора – четвёртого базового компонента электрических схем было предсказано в 1971 году Леоном Чуа (Leon O. Chua), однако лабораторный образец запоминающего элемента был создан только в 2008 году коллективом учёных во главе со Стэнли Уильямсом (Stanley Williams) в исследовательской лаборатории фирмы Hewlett-Packard.
Этот пассивный элемент способен запоминать собственное состояние. Можно сказать, что это резистор, сопротивление которого изменяется в зависимости от протекающего через него заряда. Когда элемент обесточивают, измененное сопротивление сохраняется.
В настоящее время ведутся разработки коммерческой реализации мемристора. Как только это произойдет, появится возможность для создания новых видов памяти, способных помимо хранения данных еще и обрабатывать их.
Что касается The Machine, то в ней нет границы между оперативной памятью и постоянным хранилищем данных. Вся память представляет собой оперативную. Это нивелирует проблемы, связанные с передачей информации между устройствами, работающими с разной скоростью.
Думается, что SCM-технологии призваны побороть неэффективность, возникающую при «общении» медленной и быстрой памяти. Тем интереснее наблюдать за происходящим: как новые разработки затронут все уровни инфраструктурного стека. Все еще только начинается.
Комментирует руководитель отдела развития проекта 1cloud.ru Сергей Белкин:
«Разные типы дисков могут требоваться для решения различных задач. Использование дисков различных типов может быть оправданным при создании многоуровневых систем хранения данных – данные, которые часто используются приложениями, можно размещать на более быстрых дисках.
К примеру, если существует сервис, который активно работает с базой данных, то ее имеет смысл перенести на отдельный SSD-диск – это поможет оптимизировать скорость ее работы. При этом, саму операционную систему логично оставить на более медленных дисках. Одновременное использование различных типов дисков позволяет сделать общее инфраструктурное решение более гибким, эффективным и оптимизированным по цене.
Что касается новых разработок в сфере твердотельных накопителей, то в прошлом году компании Intel и Micron анонсировали 3D XPoint (произносится как «кросспойнт») – безтранзисторную трехмерную архитектуру и заявили, что срок эксплуатации и скорость работы таких ЗУ превысит возможности памяти NAND в 1000 раз. Если это решение станет коммерческим, то, я думаю, оно с большой долей вероятности будет использоваться в центрах обработки данных для хранения часто запрашиваемых «горячих» данных»
Мнение Джорджа Крампа (George Crump) из Storage Switzerland:
«SCM – это новый тип хранилища, которое может стать промежуточным звеном между высокопроизводительной DRAM и дешевыми HDD. SCM-память способна обеспечить скорость считывания, близкую к скорости чтения DRAM, и скорость записи, во много раз превышающую возможности жестких дисков.
Это стало возможным благодаря интерфейсу PCIe, через который флеш-хранилище подключается напрямую к процессору. Однако не любой SSD-накопитель, подключенный по PCIe, является SCM-устройством.
Некоторые поставщики в погоне за производительностью устанавливают несколько контроллеров на свои карты, каждый из которых отвечает за свою область флеш-памяти. На первый взгляд, это кажется здравой идеей, однако в этом случае у контроллера нет возможности записывать или читать блоки, которые находятся за пределами его компетенции.
Если блок большой – это, наоборот, может негативно повлиять на скорость работы. Эта и другие проблемы с производительностью, возникающие из-за неэффективности существующих интерфейсов, тормозят процесс адаптации технологии»
Мнение Скотта Дэвиса (Scott Davis), технического директора Infinio:
«SCM-технологии станут доступны для коммерческого использования не раньше конца 2016 года.
Скорее всего, это будет ранняя реализация технологии 3D XPoint от Intel. HP и SanDisk также анонсировали, что работают над совместным проектом, однако их продукт, вероятно, выйдет на рынок не раньше начала 2017 года.
Стоит учитывать, что, как в случае со многими новыми технологиями, SCM-устройства первое время будут обладать ограниченной областью применимости. Препятствием для выхода на широкий рынок станет стоимость устройств»
Автор: 1cloud.ru