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


Рекомендации по производительности сетевой файловой системы (NFS) 3.0 в хранилище BLOB-объектов Azure

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

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

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

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

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

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

Производительность уровня

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

Не все приложения могут масштабироваться путем добавления дополнительных клиентов. Для этих приложений учетная запись хранения блочных BLOB-объектов уровня "Премиум" Azure обеспечивает стабильно низкую задержку и высокую скорость транзакций. Премиум-аккаунт для хранения блоб-данных может достичь максимальной пропускной способности с использованием меньшего количества потоков и клиентов. Например, с одним клиентом учетная запись хранения BLOB-объектов класса Premium может достичь пропускной способности 2,3x по сравнению с той же настройкой, используемой со стандартной учетной записью хранения общего назначения общего назначения версии 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 с поддержкой NFS.

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

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

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

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

nconnect — это параметр подключения Linux на стороне клиента, который позволяет использовать несколько TCP-подключений между клиентом и конечной точкой службы BLOB-объектов. Вы можете использовать nconnect параметр в команде подключения, чтобы указать количество 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 без поддержки nconnect Azure приведет к снижению пропускной способности, вызовет несколько тайм-аутов и приведет к неправильной работе таких команд, как READDIR и READIRPLUS.

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

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

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

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

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

Другие рекомендации по передовым практикам

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

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

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

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

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

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