Вопрос или проблема
Я пытаюсь решить проблему с SMB и RSS на моем Windows 10 Pro.
Я пытаюсь разобраться, как SMB определяет, поддерживает ли сетевая карта RSS и использует ли Multichannel, чтобы снизить нагрузку на один ядро процессора.
У меня есть случай, когда установлена сетевая карта Intel на 2.5Gbit (i226-V), и передача с сервера не соответствует ожиданиям.
* Передача на сервер (Linux Samba) ~280 МБ/с - это ожидаемо.
* Передача с сервера ~130 МБ/с - что-то не так.
Я посмотрел в диспетчере задач, и загрузка одного ядра процессора составляет 100% (Core i9-9900k). Это, вероятно, причина, по которой передача с сервера так низка, одно ядро процессора не смогло обработать больше данных, чем 1.3 Gbit/с (возможно, слишком много IRQ).
Первое, что я сделал, это использовать Jumbo Frames – это помогло, и теперь как загрузка, так и выгрузка около 290 МБ/с, а загрузка одного ядра процессора составляет около 50%. Но я слышал много недостатков Jumbo Frames, поэтому думаю, что это не может быть идеальным решением.
Я начал искать и обнаружил, что RSS может быть решением, так как позволяет использовать SMB Multichannel, разделяя нагрузку процессора на большее количество ядер. Если, например, используются 4 соединения вместо одного, и каждое соединение использует свою собственную очередь приема, которая может обрабатываться на разных ядрах процессора, это делит загрузку на 4 ядра, и теоретически 25% каждого ядра будет использовано.
Но похоже, что Intel убрал поддержку RSS для i226-V в последнем драйвере.
Я нашел наборы ключей в реестре, которые в теории должны повторно включить RSS, и добавил их в реестр.
Теперь Windows сообщает об RSS для сетевой карты.
Get-NetAdapterRss
Имя : Ethernet
Описание интерфейса : Intel(R) Ethernet Connection (7) I219-V
Включен : True
Количество очередей приема : 2
Профиль : Closest
Базовый процессор: [Группа:Номер] : 0:0
Максимальный процессор: [Группа:Номер] : 0:14
Максимальные процессоры : 4
Массив процессоров RSS: [Группа:Номер/Расстояние NUMA] : 0:0/0 0:2/0 0:4/0 0:6/0 0:8/0 0:10/0 0:12/0 0:14/0
Таблица косвенной адресации: [Группа:Номер] :
Имя : Ethernet 2.5Gbit
Описание интерфейса : Intel(R) Ethernet Controller I226-V
Включен : True
Количество очередей приема : 4
Профиль : NUMAStatic
Базовый процессор: [Группа:Номер] : 0:0
Максимальный процессор: [Группа:Номер] : 0:14
Максимальные процессоры : 4
Массив процессоров RSS: [Группа:Номер/Расстояние NUMA] : 0:0/0 0:2/0 0:4/0 0:6/0 0:8/0 0:10/0 0:12/0 0:14/0
Таблица косвенной адресации: [Группа:Номер] :
Но SMB все равно сообщает, что все NIC не поддерживают RSS.
Get-SmbClientNetworkInterface
Индекс интерфейса RSS Поддерживается RDMA Поддерживается Скорость IpAddresses Дружественное имя
----------------- ----------- ------------ ----- ----------- -------------
10 False False 0 bps {fe80::1024:1a7:103a:f7bc} Ethernet
3 False False 2.5 Gbps {fe80::38a4:cbfd:a9aa:fa50, 192.168.0.2} Ethernet 2.5Gbit
21 False False 1 Gbps {fe80::8844:d974:756:3129, 192.168.56.1} VirtualBox Host-Only Network
16 False False 3 Mbps {fe80::98ea:7ea6:c8aa:feb1} Подключение Bluetooth 4
Так что мне интересно, как код SMB определяет RSS. Использует ли он вызов драйвера, чтобы проверить поддержку RSS? Драйвер для i226-V не реализует RSS, и эти настройки в реестре ничего не делают, или Windows 10 Pro отключила RSS, и даже если NIC сообщает об этом, SMB все равно использует одно соединение. Моя предыдущая настройка использовала две сетевые карты на 1Gbit, и SMB хорошо использовал обе, и я наблюдал передачу примерно 220 МБ/с как на сервер, так и с сервера, так что multichannel работает.
Мне интересно, поможет ли переход на Marvell Aquantia AQ113, но, по крайней мере, я хочу узнать, нет ли у этой карты аналогичной проблемы и распознает ли Windows SMB ее как способную к RSS и устанавливает ли несколько соединений с сервером?
Снижение нагрузки – это аппаратная и драйверная функция. Если драйвер поддерживает это, вы можете настроить это на вкладке “Дополнительно” в свойствах сетевой карты.
Как прокомментировал @GregAskew, Распределение нагрузки на стороне приема – это устаревшая технология и, по сути, данность. Если SMB говорит, что это не поддерживается (путем запроса драйвера), скорее всего, это было деактивировано в свойствах сетевой карты.
Моя предыдущая настройка использовала две сетевые карты на 1Gbit, и SMB хорошо использовал обе.
Это НЕ RSS. Распределение нагрузки на стороне приема распределяет обработку TCP для конкретного соединения по нескольким CPU/ядрам. Распределение трафика между несколькими сетевыми картами называется multipathing или SMB3 Multichannel.
Максимальная пропускная способность 130 МБ/с также может указывать на наличие соединения 1 Gbit/с на сервере, клиенте или где-то между ними.
Ответ или решение
Анализ проблемы с Windows SMB и поддержкой RSS на NIC
Введение
Проблема с производительностью передачи данных через SMB и НИК (сетевой интерфейсный контроллер) может быть вызвана рядом факторов, включая неправильные настройки драйверов, аппаратных ограничений и архитектуры сети. В данной статье мы рассмотрим поддержку Receive Side Scaling (RSS) и SMB Multichannel, а также предложим возможные решения.
Что такое RSS и SMB Multichannel
Receive Side Scaling (RSS) — это технология, которая распределяет обработку TCP соединений по нескольким процессорным ядрам, что позволяет повысить производительность сетевой передачи данных. Значение RSS становится очевидным, особенно на многоядерных процессорах.
SMB Multichannel является функциональностью SMB 3.0 и выше, которая позволяет использовать несколько соединений одновременно, что обеспечивает лучшую производительность при передаче данных между клиентом и сервером.
Проблема с производительностью
В вашем случае наблюдается следующая ситуация:
- Скорость передачи данных с сервера (Linux Samba): 280 MB/s
- Скорость передачи данных на сервер: 130 MB/s
- 100% загрузка одного ядра при передаче данных
Данные результаты указывают на то, что одно ядро процессора не справляется с обработкой потока данных и, скорее всего, это связано с тем, что не используется RSS или SMB Multichannel.
Исследование конфигурации вашего сетевого адаптера
Вы указали, что у вас установлен 2.5Gbit адаптер Intel i226-V, который, по вашим словам, не поддерживает RSS, согласно последним драйверам. Также вы проанализировали настройки реестра, вносившие изменения для включения RSS, однако это, похоже, не дало результатов.
По команде Get-NetAdapterRss
видно, что поддержка RSS включена, но команда Get-SmbClientNetworkInterface
показывает, что все сетевые интерфейсы не поддерживают RSS. Это может быть связано с тем, что драйвер сетевого адаптера не реализует нужные функции, позволяющие SMB распознать поддержку RSS.
Потенциальные решения
-
Проверка настроек драйвера:
- Проверьте разграничение настроек RSS в свойствах сетевого адаптера. Убедитесь, что RSS действительно включен и драйвер сетевого адаптера поддерживает эту функцию.
- Попробуйте использовать более стабильные версии драйверов, если доступные — более ранние версии могут предлагать лучшую поддержку функций.
-
Альтернативные адаптеры:
- Вы упомянули возможность перехода на адаптер Marvell Aquantia AQ113. Убедитесь, что адаптер имеет хорошую репутацию относительно поддержки RSS и SMB Multichannel, прежде чем производить замену.
-
Мониторинг производительности:
- Имейте в виду, что использование Jumbo Frames, хотя и улучшило производительность, может создать дополнительные проблемы с совместимостью в вашей сети. Рассмотрите возможность тестирования портов в вашей сети на предмет пропускной способности и задержек.
-
Проверка сетевой инфраструктуры:
- Проверьте всю сетевую инфраструктуру на наличие ограничений по пропускной способности, которые могут влиять на результаты производительности при передаче данных.
Заключение
На данном этапе важно удостовериться, что сетевой адаптер и драйвера корректно настраиваются на использование RSS и SMB Multichannel. Если текущий адаптер не удовлетворяет ваши потребности, переход на другой адаптер со стабильной поддержкой, как Marvell Aquantia, может быть разумным решением. Убедитесь, что все изменения конфигурации записаны и протестированы, чтобы убедиться в их эффективности.
Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться за помощью.