Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Виртуальные машины Linux и BSD имеют дополнительные соображения по сравнению с виртуальными машинами Windows в Hyper-V.
В первую очередь следует учитывать, присутствуют ли службы интеграции или виртуальная машина работает только на эмулированном оборудовании без оптимизаций. Доступна таблица выпусков Linux и BSD, имеющих встроенные или загружаемые службы Integration Services, в разделе Поддерживаемые виртуальные машины Linux и FreeBSD на платформе Hyper-V в Windows. На этих страницах представлены сетки с доступными функциями Hyper-V для выпусков дистрибутивов Linux и примечания к этим функциям, где это применимо.
Даже если гостевая операционная система работает под управлением служб Integration Services, она может быть настроена так, что использует устаревшее оборудование, которое не обеспечивает лучшую производительность. Например, настройте и используйте виртуальный адаптер Ethernet для гостя вместо использования устаревшего сетевого адаптера. В Windows Server 2016 также доступны расширенные сети, такие как SR-IOV.
Производительность сети Linux
Linux по умолчанию включает аппаратное ускорение и разгрузку по умолчанию. Если в свойствах сетевого адаптера хоста включена vRSS, и гостевая ОС Linux имеет возможность использовать vRSS, эта возможность будет активирована. В Powershell этот же параметр можно изменить с помощью EnableNetAdapterRSS команды.
Аналогичным образом функция VMMQ (RSS виртуального коммутатора) может быть включена в физическом сетевом адаптере, используемом свойства гостя>Настроить...>Дополнительно вкладка > установка RSS виртуального коммутатора на Включено или включите VMMQ в PowerShell, используя следующее:
Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True
В гостевой системе можно дополнительно настроить TCP путем увеличения ограничений. Для достижения наилучшей производительности рекомендуется распределять рабочую нагрузку по нескольким процессорам и иметь глубокие рабочие процессы, так как виртуализированные нагрузки будут иметь более высокую задержку по сравнению с нагрузками на физическом оборудовании.
Ниже приведены примеры параметров настройки, которые были полезны в сетевых тестах.
net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1
Полезное средство для сетевых микробншмарков — ntttcp, доступное как в Linux, так и в Windows. Версия Linux — это открытый исходный код и доступна из ntttcp-for-linux на github.com. Версию Windows можно найти в центре загрузки. При настройке рабочих нагрузок рекомендуется использовать столько потоков, сколько необходимо для получения оптимальной пропускной способности. Для моделирования трафика с помощью ntttcp параметр -P задает количество используемых параллельных подключений.
Производительность хранилища Linux
Некоторые рекомендации, как показано ниже, приведены в рекомендациях по запуску Linux в Hyper-V. Ядро Linux имеет разные планировщики ввода-вывода для переупорядочения запросов с различными алгоритмами. NOOP — это очередь первого выхода, которая передает решение о расписании, которое будет принято гипервизором. Рекомендуется использовать NOOP в качестве планировщика при запуске виртуальной машины Linux на Hyper-V. Чтобы изменить планировщик для определенного устройства, в конфигурации загрузчика (/etc/grub.conf, например), добавьте elevator=noop в параметры ядра и перезапустите его.
Как и в сетевых операциях, производительность виртуальной машины Linux при работе с хранилищем больше всего выигрывает от использования нескольких очередей с достаточной глубиной, чтобы держать узел в активном состоянии. Микробенчмаркинг производительности хранилища вероятно лучше всего проводить с инструментом fio и механизмом libaio.