пятница, 11 апреля 2014 г.

NVMe - эсктремально быстро.


Все ненужное - на слом!

    SSD, стремительно ворвавшись в поток серверных решений, внес некоторую сумятицу в относительно плавное течение. Появился дисбаланс в цепочке между потребителем - процессором и поставщиком - SSD хранилищем, поскольку вдруг выяснилось, что промежуточные звенья - контроллеры и шины не справляются. Ну, не то - чтобы совсем не справляются, но производителям контроллеров пришлось срочно делать заплатки к микрокоду, чтобы подстроиться под особенности внутренней структуры SSD. При этом осталось внутреннее противоречие. Традиционные HDD, как бы ни быстры они были в своей области, не меняют кардинально принципы организации хранения и становятся "медленными". В то же время "быстрые" SSD имеют кардинально отличающуюся внутреннюю организацию и требуют других алгоритмов доступа. Встает вопрос: "А стоит ли мешать все в кучу? Не настало ли время отделить котлеты от мух?" HDD останутся со своими контроллерами, а SSD для особенно требовательных задач подключим к системе по своему хайвею, оптимизированному конкретно под них. Дело даже не в пропускной способности связки шина-контроллер-интерфейс-дивайс, а в первую очередь в сокращении задержек прохождения информации туда-сюда (latency). Чем меньше звеньев на пути - тем она меньше, это понятно.

В самое сердце!

    PCI SSD. Это решение родилось не вчера. Решения с разным успехом представлялись на рынок  - (что нашлось) июль 2001 - Cenatek представила Rocket Drive, декабрь 2001 - Platypus Technology из Австралии предложила высокопроизводительный RAM SSD accelerator (я даже продал пару - стоили совершенно безумные деньги!) Из здравствующих ныне - давно и успешно специализирующаяся на PCI SSD ускорителях FusionIO, безуспешно обогнать которую
кинулись теперь многие. Идет становление рынка, каждая компания пытается нащупать ту нишу и с теми возможностями - которые есть у нее под рукой. Вплоть до связки достаточно стандартного контроллера с напаянными или пришпандоренными как мезанины одним или двумя SSD. Но до недавнего времени по-прежнему оставалась цепочка PCI шина - контроллер - собственно, флеш-накопитель. Выкидывался только интерфейс.
     Как максимально близко подобраться к процессору? Убрать все с пути и цепляться непосредственно к одному из интерфейсов, исходящих из него. Что мы имеем в современном исполнении процессора? Шины памяти, (после того, как один из мостов переехал внутрь) шины PCI и шина межсоединений процессоров QuickPath Interconnect (QPI). Последняя самая быстрая, но туда не влезешь особенно - и короткая, и по-хорошему сильно загруженная своими задачами. Остаются шины памяти и PCI.

Отступление в смежную область
    По шинам памяти нам предлагают общаться с SSD пара компаний - SMART Storage Systems и Diablo Technologies Inc. Их решения в формате "SSD DIMM" я коротенько описывал в ULLtraDIMM - вот оно, щасте??. Решение небесспорное.
1. Имеется ограничение на объем - каждый модуль ограничен физически объемом, который можно напаять на маленькую плату формата DIMM. Материнская плата имеет ограниченное количество слотов, куда можно их установить.
2. Занимаемые SSD DIMM модулями слоты в системе урезают возможный объем оперативной памяти (RAM)
3. Несмотря на подключение по шине памяти, процессор общается с накопителями не как с памятью, а - как говорил один знакомый - "через назад", через драйверы, которые позволяют SSD DIMM "прикинуться" обычным HDD.
4. Локальное применение внутри конкретного сервера
    Наверное, есть еще существенные недостатки, привел лишь те - что сразу приходят в голову. Не говоря уже о том, что решение проприетарное (закрытое, частное), никем особенно не поддержанное и (пока) существующее в виде прототипа. До промпроизводства все никак не дотянут.

К нашим баранам!
    PCI. В марте 2011 в тесном контакте с SNIA зародился открытый проект - NVM Express. NVM - общее обозначение энергонезависимой памяти (Non-volatile memory). Организовался он общими усилиями порядка 80 компаний, в число которых входят все основные игроки рынка систем хранения, накопителей, чипов и т.д. LSI и Adaptec тоже в первых рядах - сначала немного удивился, потом все понял. Microsoft, VMWare,... (так вот они где все!... А мы удивлялись - почему SSD DIMM никто не поддерживает?..). Спецификации представлены тут.
    Конструктивных реализаций предусмотрено несколько - под разные варианты применения.
- В виде PCI-e платы. Применение ограничено одним конкретным сервером.
- В формате 2,5" накопителя
    -- С непосредственным подключением накопителей в формате 2,5" через разъем SFF-8639. Ориентировано применение в качестве кэш или быстрого хранилища без резервирования. Ограничено пределами одного сервера.
    -- Через контроллер. Вот тут предусмотрены и RAID и кластер, ...
    -- Во внешнем хранилище. Доступ через метаданные



    Что мы получаем?
- экстремально низкие задержки. Это конек SSD, и этот конек используется теперь на всю катушку!
- масштабируемая пропускная способность (линейно с количеством задействованных линий PCI. Пока они не закончатся..)
- мало того, что оптимизируется очередь запросов, так они теперь могут параллельно выстраиваться и выполняться в независимых тредах в разных ядрах процессора. Размер очереди увеличен до 64к для каждого занятого в процессе ядра!
- в системах с подключением накопителей в формате 2,5" - горячая замена накопителей
- экономия на стоимости и потребляемой мощности дискового контроллера (для формата 2,5"). Для систем с PCIe контроллером этот пункт не действует.
- возможность работы с метаданными - прямой путь к распределенному и  виртуальному хранилищу.
- использование уникальных идентификаторов Namespace ID позволяет получить множественный доступ к отдельному устройству. Идентификатор строится следующим образом:
           Unique NVMe Controller Identifier =
           2B PCI Vendor ID + 20B Serial Number + 40B Model Number + 2B Controller ID
           Unique Namespace Identifier =
           64B Unique NVM Subsystem Identifier + 8B IEEE Extended Unique Identifier
- NSID - ключевая технология для резервирования (Reservation) - аналог понятия "кластер". Что такое "резервирование"? Координация доступа множества хостов к ресурсу в общем доступе.
- управление питанием. SSD не надо раскручиваться для того, чтобы "проснуться". В режиме глубокого сна он может потреблять всего 5 милиВатт. А "просыпается", в отличие от HDD, практически мгновенно! Предусмотрено аж 32 уровня потребления, которые можно задавать устройству с контроллера при помощи NPSS (Number of Power States Supported). То есть, накопители живут не в черно-белом мире (работаю - сплю), а могут быть тонко настроены на требуемую именно в данный момент производительность.
Например, вот так:
Example Power State Descriptor Table
Power State  Maximum Power (MP)  Entry Latency (ENTLAT)  Exit Latency (EXLAT)  Relative Read Throughput (RRT)  Relative Read Latency (RRL)  Relative Write Throughput (RWT)  Relative Write Latency
0 25 W 5 μs 5 μs 0 0 0 0
1 18 W 5 μs 7 μs 0 0 1 0
2 18 W 5 μs 8 μs 1 0 0 0
3 15 W 20 μs 15 μs 2 0 2 0
4 10 W 20 μs 30 μs 1 1 3 0
5 8 W 50 μs 50 μs 2 2 4 0
6 5 W 20 μs 5000 μs 4 3 5 1


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


    NVMe - это четыре буквы 2013 года!!! Активность бешеная, но не на поверхности. Все готовятся. Мягкие пишут драйверы и программные стеки. Жесткие адаптируют свою продукцию под новую технологию.
   Samsung первый объявил о выпуске готового накопителя - XS1715 PCIe SSD.
   PMC-Sierra подготовил линейку контроллеров, но пока никому не показывает:
PMC-Sierra 89HF08P08CG3 NVMEC08: 8-channel with PCIe x4/x8 Gen 3
PMC-Sierra 89HF16P04AG3 NVMEC16: 16-channel with PCIe x4 Gen 3
   Supermicro уже в апреле (по родмэпу, по крайней мере) готов грузить X10DDW-i, которая имеет 8шт внутренних и 2шт внешних NVMe портов! Каждый из портов - 4-линейный.
... наверное, еще много чего много у кого есть, привел лишь примеры.

    Массовое явление продукции и систем намечено на 2014 год. Как бы, мы уже тут, вооружились оптическими приборами, и чековыми книжками, на готове...
PMC-Sierra 89HF32P08AG3 NVMEC32: 32-channel with PCIe x4/x8 Gen 3

Список литературы.
NVM Express http://www.nvmexpress.org/
Рекламный ролик Интел (ни о чем) NVMe за 3 минуты http://www.youtube.com/watch?v=ACyTonhxXd8
Обзор Демартек - "видел, трогал!" http://www.demartek.com/Demartek_Comments_IDF2013_and_NVMe.html
Пресс-релиз Samsung первый NVMe SSD
http://www.samsung.com/global/business/semiconductor/news-events/press-releases/detail?cateSearchParam=&searchTextParam=&startYyyyParam=&startMmParam=&endYyyyParam=&endMmParam=&newsId=12961&page=&searchType=&rdoPeriod=A
Представление решения
https://www.snia.org/sites/default/education/tutorials/2012/fall/solid/AnilVasudeva_NVMe_NextGen_SSD%20Interface-r1-nc1.pdf

Кстати, коллега также осветил предмет, параллельный взгляд никогда не помешает погружению в тему:
http://true-system.blogspot.ru/2014/03/nvme.html

Комментариев нет:

Отправить комментарий