Рекомендации по повышению производительности NFS 3.0 в Хранилище BLOB-объектов Azure

Хранилище BLOB-объектов теперь поддерживает протокол сетевой файловой системы (NFS) версии 3.0. Эта статья содержит рекомендации, помогающие оптимизировать производительность запросов к хранилищу. Дополнительные сведения о поддержке NFS 3.0 в Хранилище BLOB-объектов Azure см. в этой статье.

Добавление клиентов для увеличения пропускной способности

Хранилище BLOB-объектов Azure масштабируется линейно, пока не достигнет максимального предела для входящего и исходящего трафика учетной записи хранения. Таким образом, приложения могут повысить пропускную способность, используя больше клиентов. Чтобы получить дополнительные сведения об ограничениях входящего и исходящего трафика учетной записи хранения см. статью Целевые показатели масштабируемости и производительности для учетных записей хранения ценовой категории "Стандартный".

На следующей диаграмме показано, как увеличивается пропускная способность по мере добавления клиентов. На этой диаграмме клиентом является виртуальная машинка (VM) со стандартной учетной записью хранения общего назначения версии 2.

Уровень

На приведенной ниже диаграмме показан тот же эффект при применении к учетной записи для хранения блочных BLOB-объектов категории "Премиум".

Уровень

Использование учетных записей хранилища блочных BLOB-объектов категории "Премиум" для приложений малого масштаба

Не все приложения могут масштабироваться путем добавления дополнительных клиентов. Для этих приложений учетная запись хранилища блочных BLOB-объектов Azure уровня "Премиум" обеспечивает постоянную низкую задержку и высокую скорость транзакций. Учетная запись хранилища блочных BLOB-объектов уровня "Премиум" может достигать максимальной пропускной способности с меньшим количеством потоков и клиентов. Например, при использовании одного клиента учетная запись хранения блочного BLOB-объекта уровня "Премиум" может достичь пропускной способности в 2,3 раза больше по сравнению с той же программой установки, которая использовалась для стандартной учетной записи хранения общего назначения версии 2.

На каждой панели на следующей диаграмме показано различие между учетными записями хранения уровня "Премиум" и "Стандартный". По мере роста числа клиентов это различие уменьшается.

Относительная производительность

Улучшенный размер упреждающего чтения для увеличения пропускной способности чтения крупных файлов

Параметр ядра read_ahead_kb представляет объем дополнительных данных, который нужно считать после выполнения определенного запроса чтения. Значение этого параметра можно увеличить до 16 МиБ, чтобы улучшить пропускную способность считывания крупных файлов.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

Избегайте частой перезаписи данных

Выполнение операции перезаписи занимает больше времени, чем новая операция записи. Это обусловлено тем, что операция перезаписи NFS, особенно частичное изменение файла на месте, представляет собой сочетание нескольких базовых операций с BLOB-объектами: операции чтения, изменения и записи. Таким образом, приложение, требующее частых изменений в месте, не подходит для учетных записей хранения BLOB-объектов с поддержкой NFS.

Развертывание Azure HPC Cache для приложений, чувствительных к задержке

Помимо высокой пропускной способности, для некоторых приложений может требоваться небольшая задержка. Чтобы значительно улучшить задержку, можно развернуть Azure HPC Cache. Дополнительные сведения о задержке в хранилище BLOB-объектов.

Увеличение числа TCP-подключений

Вы можете использовать nconnect параметр подключения, чтобы повысить совокупную производительность чтения и записи с одной виртуальной машины, но только в том случае, если в ядре Linux есть поддержка Azure nconnect.

nconnect — это вариант подключения Linux на стороне клиента, который позволяет использовать несколько TCP-подключений между клиентом и конечной точкой службы BLOB-объектов. Вы можете использовать nconnect параметр в команде mount, чтобы указать количество создаваемых TCP-подключений (например, mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain).

Важно!

Хотя последние дистрибутивы Linux полностью поддерживают nconnect, этот параметр следует использовать только в том случае, если в вашем ядре есть поддержка Azure nconnect. nconnect Использование параметра подключения без поддержки Azure nconnect приведет к снижению пропускной способности, многократному превышению времени ожидания и неправильной работе таких команд, как READDIR и READIRPLUS .

Поддержка Azure nconnect доступна с большинством последних kernals Ubuntu, которые можно использовать с виртуальными машинами Azure. Чтобы узнать, доступна ли поддержка Azure nconnect для ядра, выполните следующую команду.

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

Если для ядра доступна поддержка Azure nconnect, выводится Yes на консоль. 'No В противном случае выводится на консоль.

Если доступна поддержка Azure nconnect, включите ее, выполнив следующую команду.

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

Лучшие методики и рекомендации

  • Используйте виртуальные машины с большей пропускной способностью сети.

  • Используйте несколько точек подключения, если это разрешено рабочими нагрузками.

  • Используйте как можно больше потоков, насколько это возможно.

  • Используйте крупные размеры блоков.

  • Отправляйте запросы к хранилищу от клиента, расположенного в том же регионе, что и учетная запись хранения. Это может улучшить показатели задержки в сети.

Дальнейшие действия