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

Не бывает высокопроизводительного NAS без скоростной сети, поэтому сначала изучим, на что следует обращать внимание при построении сетевой инфраструктуры.

Начнём с «железа» и общих рекомендаций. Для подключения NAS нужно использовать 10GbE, 25GbE, 40GbE или 100GbE сетевые интерфейсы, клиенты же подключаются к интерфейсам в зависимости от необходимой им пропускной способности. Чаще всего клиенты подключаются по 1Gb или 10Gb каналу.

На сегодняшний день наибольшей популярностью пользуются сетевые адаптеры и коммутаторы со скоростью 10Gb, такие решения наиболее востребованы на рынке из-за привлекательного соотношения цена/производительность. Но всё больше клиентов переходит на 25GbE и 40GbE и даже 100Gbe. На данный момент всего несколько компаний производящие NAS предлагают использовать 40Gb, 100Gb интерфейсы в качестве опций, одна из них RAIDIX.

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

Обязательным условием достижения высоких скоростей при файловом доступе будет использование последних версий протоколов SMB, NFS и др. Так в  SMB 3.0 реализована мультисессионность, поддержка RDMA — только эти два новшества увеличивают производительность в некоторых тестах в два раза. Для корректной работы поддержки RDMA нужно использовать соответствующие сетевые адаптеры.

Так же не лишним будет использование сетевых адаптеров с функцией TCP Offload которая позволяет разгрузить CPU и тем самым повысить производительность. Идеальная ситуация, когда такие адаптеры используются как на стороне NAS так и на стороне клиента.

С «железом» вроде разобрались теперь время поговорить о настройке. Для всех без исключения ОС и коммутаторов необходимо выставить MTU 9000, а в некоторых случаях и больше, зависит от железа и рекомендаций производителей.

После MTU можно переходить к настройке стека TCP/IP и начнём мы настройки Linux:

  1. Отключаем TCP timestamps для лучшей утилизации CPU

sysctl -w net.ipv4.tcp_timestamps=0

  1. Включаем TCP selective acks для улучшения пропускной способности

sysctl -w net.ipv4.tcp_sack=1

  1. Увеличиваем максимальную длину входящей очереди процессора

sysctl -w net.core.netdev_max_backlog=250000

  1. Увеличиваем размер буфера по умолчанию и максимальный размер буфера для TCP

sysctl -w net.core.rmem_max=4194304;

sysctl -w net.core.wmem_max=4194304

sysctl -w net.core.rmem_default=4194304

sysctl -w net.core.wmem_default=4194304

sysctl -w net.core.optmem_max=4194304

  1. Увеличиваем размер автотюнинга буферов TCP cоединений

sysctl -w net.ipv4.tcp_rmem=”4096 87380 4194304″

sysctl -w net.ipv4.tcp_wmem=”4096 65536 4194304″

  1. Нужно включить функции TCP Т.к. для разных адаптеров возможны разные настройки, то сначала проверяем какие TCP offload  опции поддерживает адаптер «ethtool -k —show-offload eth0», а потом их настраиваем.

Для Windows всё намного проще, там все настройки выполняются автоматически и динамически, единственная рекомендация — включить TCP Offload в драйвере сетевого адптера, остальное сделает ОС. На сегодня всё, в следующем посте рассмотрим дисковую подсистему. Продолжение следует…