Поделиться через


Рекомендации по прямому вводу-выводу Linux для Azure NetApp Files

В этой статье приведены рекомендации по прямому вводу-выводу для Azure NetApp Files.

Прямой ввод-вывод

Наиболее распространенным параметром, используемым при тестировании производительности хранилища, является прямой ввод-вывод. Он поддерживается FIO и Vdbench. DISKSPD предлагает поддержку аналогичной конструкции сопоставления ввода-вывода в памяти. При прямом вводе-выводе кэш файловой системы не задействован, операции для копирования прямого доступа к памяти исключаются, а тесты хранилища выполняются быстро и просто.

Использование прямого ввода-вывода обеспечивает простоту тестирования хранилища. Данные не считываются из кэша файловой системы на клиенте. Таким образом, тест действительно нагружает сам протокол хранилища и саму службу, а не оценивает скорость доступа к памяти. Кроме того, без операций копирования в память DMA операции чтения и записи эффективны с точки зрения обработки.

В качестве примера рабочей нагрузки можно взять команду dd в Linux. Без дополнительного флага odirect все операции ввода-вывода, создаваемые dd, обслуживаются из буферного кэша Linux. Операции чтения с блоками, уже находящимися в памяти, не извлекаются из хранилища. Операции чтения, приводящие к промаху буферного кэша, считываются из хранилища с использованием NFS без упреждающего чтения с различными результатами, в зависимости от таких факторов, как подключение rsize и настраиваемые параметры упреждающего чтения клиента. Когда операции записи отправляются через буферный кэш, они используют механизм отложенной записи, который не настраивается и использует значительный объем параллелизма для отправки данных на устройство хранения. Вы можете попытаться запустить два независимых потока ввода-вывода, один dd для чтения, и один dd для записи. Но на самом деле операционная система без настройки отдает предпочтение записи, а не чтению, и использует для нее больше параллелизма.

Помимо базы данных, не все приложения используют прямой ввод-вывод. Вместо этого они используют преимущества большого кэша памяти для многократного чтения и записи за кэшем для асинхронных операций записи. В двух словах, использование прямого ввода-вывода сводит тест к микротестированию производительности, если в синтезируемом приложении используется кэш файловой системы.

Ниже приведены некоторые базы данных, которые поддерживают прямой ввод-вывод:

  • Oracle;
  • SAP HANA
  • MySQL (подсистема хранилища InnoDB)
  • RocksDB
  • PostgreSQL
  • Teradata

Рекомендации

Тестирование с directio — это отличный способ понять ограничения службы хранилища и клиента. Чтобы лучше понять, как будет работать само приложение (если приложение не использует directio), следует также выполнять тесты в кэше файловой системы.

Следующие шаги