вторник, 17 ноября 2015 г.

Блог Stephen Bates (PMC-Sierra) - выжимаем все соки из SSD хранилища. Статья 1 - Driver/OS/CPU latency.

    Инженер PMC-Sierra Stephen Bates в блоге компании начал серию из 4 статей (по им же описанному числу влияющих факторов), разбирающих работу системы хранения на SSD с точки зрения производительности.

    Если до недавнего времени накопители были НАСТОЛЬКО медленнее всей остальной системы хранения, что однозначно определяли ее общую производительность, то с распространением SSD, а теперь и особенно с появлением сверхбыстрого интерфейса NVMe и соответствующих накопителей, приходится "ловить блох" уже в системе, обслуживающей накопители.
    Автор выделил 4 области, привносящие задержки в работу системы:

  1. Media latency   (задержка накопителя)
  2. Controller latency   (задержка контроллера)
  3. Fabric latency   (задержка фабрики. Технически, фабрика описана стандартами)
  4. Driver/OS latency/CPU latency   (задержка, вносимая драйвером)

Stephen Bates начал - как и у нас часто принято начинать - с конца. Первая заметка посвящена работе драйверов.

    Задержка, вносимая драйвером, определяется широким набором и сочетанием факторов - какая OS, какая сборка, какой тип процессора (-ов), сколько ядер, тредов, памяти, ...  - в общем, индивидуальна для КАЖДОГО конкретного сочетания железа/софта. Но
определенные тенденции можно выделить. Для упрощения, Stephen выделил как существенную составляющую систему обработки прерываний.
    Стенд состоит из компьютера на Intel x86 CPU и накопителя PMC Flashtec NVRAM, между которыми воткнут PCIe Logic Analyzer. Нагрузка на накопитель - случайное чтение.
    PCIe Logic Analyzer позволил разделить общую задержку на 2 составляющих - задержку накопителя (№1 в списке) с одной стороны - синим на диаграмме и задержку хоста (включающую группово факторы №№2-4) - рыжерозовым на диаграмме.

Распределение задержек. Из материала PMC-Sierra

    Сразу бросается в глаза, что задержка накопителя хорошо предсказуема - диапазон ее флуктуаций лежит в пределах 8 - 11 микросекунд.
    Задержка же системы телепается от 5 до 30 микросекунд - разброс в 6 раз! Исследователи проанализировали ситуацию и пришли к выводу, что задержка хоста определяется тем, как обрабатываются прерывания MSI-X и как результат обработки прерывания возвращается обратно в операционную систему.

   Далее экспериментаторы сравнили задержки, получаемые при трех различных методах обработки прерываний: 1) стандартная система; 2) Storage Performance Developer Kit (SPDK), выпущенный компанией Intel и 3) использовали polling driver на уровне Linux kernel block layer (Polling and Interrupts?).

    Сравнительные результаты приведены ниже



    Использование SPDK может двукратно прирастить производительность в IOPS, сократив задержку в 4 раза. Polling Driver дает сравнимый, хотя и несколько меньший результат. !!!! Нагрузка на центральный процессор при этом возрастает в 2,5 раза.


    Ждем продолжения банкета исследований!

http://blog.pmcs.com/having-fun-at-queue-depth-1-what-next-generation-non-volatile-memory-ng-nvm-means-for-pcie-ssds-and-ssd-drivers/

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

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