Рекомендации по прямому вводу-выводу 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
), также следует выполнять тесты с помощью кэша файловой системы.
Следующие шаги
- Рекомендации по кэшированию в файловых системах Linux для Azure NetApp Files
- Рекомендации по параметрам подключения NFS для Linux для Azure NetApp Files
- Рекомендации по параллелизму Linux для Azure NetApp Files
- Рекомендации по работе с Linux NFS для чтения
- Рекомендации по SKU виртуальных машин Azure
- Тесты производительности для Linux