Инженер PMC-Sierra Stephen Bates в блоге компании начал серию из 4 статей (по им же описанному числу влияющих факторов), разбирающих работу системы хранения на SSD с точки зрения производительности.
Если до недавнего времени накопители были НАСТОЛЬКО медленнее всей остальной системы хранения, что однозначно определяли ее общую производительность, то с распространением SSD, а теперь и особенно с появлением сверхбыстрого интерфейса NVMe и соответствующих накопителей, приходится "ловить блох" уже в системе, обслуживающей накопители.
Автор выделил 4 области, привносящие задержки в работу системы:
Stephen Bates начал - как и у нас часто принято начинать - с конца. Первая заметка посвящена работе драйверов.
Задержка, вносимая драйвером, определяется широким набором и сочетанием факторов - какая OS, какая сборка, какой тип процессора (-ов), сколько ядер, тредов, памяти, ... - в общем, индивидуальна для КАЖДОГО конкретного сочетания железа/софта. Но
определенные тенденции можно выделить. Для упрощения, Stephen выделил как существенную составляющую систему обработки прерываний.
Стенд состоит из компьютера на Intel x86 CPU и накопителя PMC Flashtec NVRAM, между которыми воткнут PCIe Logic Analyzer. Нагрузка на накопитель - случайное чтение.
PCIe Logic Analyzer позволил разделить общую задержку на 2 составляющих - задержку накопителя (№1 в списке) с одной стороны - синим на диаграмме и задержку хоста (включающую группово факторы №№2-4) - рыжерозовым на диаграмме.
Сразу бросается в глаза, что задержка накопителя хорошо предсказуема - диапазон ее флуктуаций лежит в пределах 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/
Если до недавнего времени накопители были НАСТОЛЬКО медленнее всей остальной системы хранения, что однозначно определяли ее общую производительность, то с распространением SSD, а теперь и особенно с появлением сверхбыстрого интерфейса NVMe и соответствующих накопителей, приходится "ловить блох" уже в системе, обслуживающей накопители.
Автор выделил 4 области, привносящие задержки в работу системы:
- Media latency (задержка накопителя)
- Controller latency (задержка контроллера)
- Fabric latency (задержка фабрики. Технически, фабрика описана стандартами)
- 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/
Комментариев нет:
Отправить комментарий