Более 9 запущенных NVME-устройств начинают работать в Linux, Ubuntu 16/18.

У нас есть сервер с 24 пользовательскими подключенными устройствами NVMe (компания, в которой я работаю, разрабатывает специализированную ASIC для аппаратного транскодирования видео с использованием NVMe в качестве транспорта). Мы взаимодействуем с нашими устройствами NVMe с помощью специфических команд поставщика в протоколе NVMe с использованием linux IOCTL. интерфейс со стандартным входящим NVMe драйвером Linux. Мы тестируем это как на ubuntu 16.04, так и на 18.04 с различным ядром, но в итоге получаем одну и ту же проблему, независимо от того, что мы делаем. У нас есть 24 устройства, подключенных через NVMe к гигабайтовому серверу хранения. Когда мы заканчиваем тесты, мы можем работать с желаемым диапазоном перекодирования FPS с 9 нашими устройствами одновременно. Мы используем FFMpeg с пользовательским плагином AVCODEC для запуска сеансов транскодирования. Как только мы попытаемся использовать 10-е устройство NVMe, мы увидим падение производительности на других устройствах, что говорит о том, что в передаче NVMe есть какое-то узкое место. Наш ввод-вывод сильно отличается от обычного SSD-накопителя, поскольку мы стараемся выполнять как можно большие операции передачи как для операций чтения, так и для операций записи (не для чтения / записи NVMe, а для нашего командного интерфейса чтения / записи поверх поставщика)

мы пытались настроить практически все параметры ядра, включая использование опроса / гибридного опроса / прерываний для nvme, изменение максимальных размеров передачи и т. д., ничего не помогает.

Сервер более чем способен использовать 10 или даже 24 nvme накопителя, он был создан для него, и использование ЦП определенно не является узким местом. Все наши передачи данных из пространства пользователя в пространство ядра выровнены по нулевой копии и выровнены на 512 байт, что подтверждается запуском perf на экземплярах.

Если у кого-то был опыт настройки большой системы хранения NVME с более чем 10 дисками в Ubuntu (Ubuntu - основной дистрибутив Linux для нас), пожалуйста, поделитесь, что еще можно сделать, чтобы максимально 10 устройств работали на максимальной скорости. скорость передачи.

0
задан 17 August 2019 в 16:29

1 ответ

Это может стоить проверить, чтобы видеть, где горлышко бутылки с перфектом

Установка с:

sudo apt-get install linux-tools

Рекордные события, скажите в течение 20 секунд в 1000 образцов в секунду:

sudo perf record -a -F 1000 sleep 20

.. и посмотрите, где горлышко бутылки происходит:

sudo perf report

Относятся к https://perf.wiki.kernel.org/index.php/Tutorial для получения дополнительной информации о перфекте. Действительно полезная статья о контролирующем использовании пропускной способности памяти с перфектом https://yunmingzhang.wordpress.com/2015/07/22/measure-memory-bandwidth-using-uncore-counters /

, С другой стороны, это может быть ограниченной пропускной способностью памяти/кэша, в этом случае pqos инструмент может использоваться на некоторых современных процессорах, чтобы контролировать использование кэша:

sudo apt-get install intel-cmt-cat
sudo modprobe msr  
sudo pqos -r
0
ответ дан 23 October 2019 в 05:35

Другие вопросы по тегам:

Похожие вопросы: