Настройка сетевых протоколов под macOS

16 апрель, 2021 - 13:25Владимир Грегуль

Профессиональных пользователей операционной системы macOS больше всего в видеопроизводстве. Рабочие процессы телеканалов и студий построены на совместном использовании ресурсов, главный из которых — системы хранения данных. Оптимизация работы клиентов macOS с СХД начинается с настройки сетевых протоколов.

Дистрибуторы широкого профиля задвинули профессиональный рынок Apple в Украине на обочину. К нему потеряли интерес интеграторы. Пройдет немного времени и компетенции уйдут вместе с носителями. Вырождающиеся популяции корпоративных пользователей Apple и ее операционной системы macOS занимаются, как правило, видеопроизводством. Рабочие процессы телеканалов и студий подготовки видеоконтента строятся вокруг систем хранения данных (СХД). Об оптимизации работы клиентов macOS с СХД и поговорим.

Сетевые протоколы

Основные протоколы сетевого доступа к СХД в macOS: AFP, NFS, SMB и FTP. Уберем из рассмотрения лишнее.

FTP не используется для совместной работы с аудио/видео данными. AFP, проприетарный протокол Apple, поддерживается редкими СХД. Сама Apple начиная с MacOS 10.9 не считает его протоколом доступа к файлам «по умолчанию». За туманностью перспектив вычеркиваем и его. NFS считался самым быстрым протоколом до появления macOS X. На сегодняшний день практически вытеснен из обихода более скоростным и эффективным SMB. На нем и остановимся.

План настроек SMB не слишком велик:

• Редактирование файла /etc/sysctl.conf, включая различные параметры delayed_ack

• Оптимизация в com.apple.desktopservices

DSDontWriteNetworkStores

• Редактирование файла /etc/nsmb.conf

SMB signing

SMB session signing

Directory caching

SMB notifications

Force protocol version

Alternate data streams (named Streams)

Apple SMB extensions

• Jumbo Frames

• Увеличение объема буфера в network stack.

Редактирование файла /etc/sysctl.conf

С помощью команды sysctl командной строки CLI можно временно изменить некоторые важные для нас параметры. Для сохранения этих параметров после перезагрузки необходимо редактировать файл /etc/sysctl.conf. Если файл отсутствует, создайте его в текстовом редакторе.

В этом файле нас в первую очередь интересует параметр delayed_ack. Не вдаваясь в природу отложенного подтверждения ТСР (энтузиасты ознакомятся по ссылке), скажем, что параметр может принимать значения:

• delayed_ack=0: ответы после каждого пакета (OFF)

• delayed_ack=1: 6 пакетов получают 1 подтверждение

• delayed_ack=2: 2 пакета на подтверждение

• delayed_ack=3: 3пакета на подтверждение

В macOS по умолчанию delayed_ack=3. При рендеринге, когда клиент одновременно пишет и читает с массива, установка delayed_ack=0 может привести к существенному приросту скорости обмена данными с массивом.

В определенных условиях могут быть уместны параметры delayed_ack=1 или delayed_ack=2. Экспериментируйте!

Команда запроса состояния параметра delayed_ack:

$ sudo sysctl -a net.inet.tcp.delayed_ack

Команда изменения параметра delayed_ack:

$ sudo sysctl -w net.inet.tcp.delayed_ack=0

После того как подобрали оптимальный параметр под свои задачи, для перманентности:

  • Создаем или правим файл /etc/sysctl.conf

  • Добавляем строку net.inet.tcp.delayed_ack=0

Оптимизация в com.apple.desktopservices

Везде, куда заглядывает macOS Finder, он оставляет след — создает файл .DS_Store. В нем содержатся метаданные о том, как отображать содержимое директории. Если в папке много файлов, запись и чтение в этот файл может существенно замедлять просмотр содержимого папок. В macOS Sierra 10.12 и более ранних версиях вычитывается файл .DS_Store, сравнивается с содержимым директории и только после этого отображается. В macOS High Sierra 10.13 и более поздних версиях, если папка отсортирована в алфавитном порядке — ее содержание отображается мгновенно, после этого вычитываются метаданные из файла .DS_Store и сравниваются с содержимым директории.

Команда defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

В macOS 10.13 запрещает создание файла .DS_Store

В macOS 10.14 файл будет создаваться, но при просмотре директории не вычитывается, что значительно ускоряет просмотр папок с большим количеством файлов.

После выполнения команды необходимо перелогиниться.

Редактирование файла /etc/nsmb.conf

Файл/etc/nsmb.conf является простым текстовым файлом, которые задает параметры общения клиента macOS с СХД посредством SMB и имеет вид:

[default]
parameter=value
parameter2=value2
parameter3=value3

В macOS версий с 10.11.5 по 10.13.3 по умолчанию включена опция SMB signing. Это значит, что к каждому пакету SMB прикреплена цифровая подпись, удостоверяющая что на пути между клиентом и массивом злобные хакеры не подменили пакеты. Дополнительные накладные расходы, связанные с подписями к пакетам, значительно снижают производительность СХД и увеличивают задержки. Поскольку априори считаем, что наша творческая группа работает в защищенной сети, смело отключаем SMB signing, установив параметр в файле /etc/nsmb.conf

signing_required=no

Перелогиниваемся к массиву — и параметр вступит в силу.

В SMB3 в дополнение к SMB signing добавилась защита SMB сеанса от подделки в момент его начала — SMB signing. Поскольку мы в по-прежнему в защищенной сети, избавляемся от SMB signing:

validate_neg_off=yes

Перелогиниваемся к массиву, параметр вступает в силу.

Метаданные содержимого сетевых «шар» кешируются в macOS. Чем больше оперативной памяти в клиенте macOS — тем больше метаданных закешируется. Это приводит к тому, что в рабочих группах, где часто добавляются/меняются файлы и изменения должны быть немедленно видимы всем участникам, такого не происходит. В macOS 10.13 и старше можно отключить кеширование метаданных:

dir_cache_off=yes

Перелогиниваемся к массиву, параметр вступает в силу.

При определенных обстоятельствах может понадобиться принудительно подключать клиента macOS посредством определенной версии SMB. Это можно сделать добавлением в файл /etc/nsmb.conf строки protocol_vers_map= с определенным параметром:

# Protocol version is specified using binary bitmap
# 1 => 0001 => SMB 1 only
# 2 => 0010 => SMB 2 only
# 3 => 0011 => SMB 1 or 2
# 4 => 0100 => SMB 3 only
# 6 => 0110 => SMB 2 or 3 #

Для примера ограничимся только SMB 3:

protocol_vers_map=4

Flow control, jumbo frames

Использование jumbo кадров (9000 MTU) может значительно повысить производительность macOS SMB на сетевых соединениях шире 1 GbE. Однако для реализации jumbo-фреймов необходимо установить правильно этот параметр, как в настройках сетевой карты клиента, так и в соответствующих настройках коммутатора и СХД. Как правило, установка jumbo-фреймов на коммутаторе должна быть выше 9000 MTU (скажем 9,412 MTU или как рекомендуют в документации коммутатора). При установке ровно 9000 MTU на коммутаторе очень часто происходит «подвисание» клиентов macOS при подключении к СХД.

После настройки MTU на клиенте нужно обратить внимание на Duplex: full-duplex, flow-control. Установка full-duplex with no flow-control однозначно приведет к плохой производительности, даже если на коммутаторе flow-control выключен. Правило простое: на коммутаторе flow-control включен, на клиентах full-duplex, flow-control.

Настройка сетевых протоколов под macOS

Увеличение объема буфера в network stack

Увеличение объема памяти, выделяемого macOS для сетевой буферизации, может нарастить пропускную способность сетевых соединений. В зависимости от общего объема системной памяти и типа сетевого соединения могут быть установлены различные значения. 256 Мб/с является хорошей отправной точкой для 10 GbE и более скоростных соединений. В macOS 10.13+ объем буфера можно изменить, загрузившись в режиме восстановления и запустив в терминале команду

nvram boot-args="ncl=131072«

После перезагрузки новое значение буфера вступит в силу. Убедиться в корректности аргумента можно терминальной командой:

nvram —xp

Можно поэкспериментировать с бувером в o 512 MB (NCL = 262144)
Для отмены изменений в nvram используйте терминальную команду

nvram -d boot-args

«Опыт, сын ошибок трудных»

Сведения, приведенные в заметке, проверены на практике. Пытайтесь это повторить. Сделайте лучше. Хотя речь о «профессиональных трюках», вреда рабочей среде вы не нанесете.

Автор просит снисхождения за подачу материала в знаковой форме, а не в виде чувственных образов.