Một số lần tôi gặp phải tình huống khi các tệp được sao chép từ / sang máy ảo trên máy chủ Hyper-V chạy Windows Server 2019 chậm hơn nhiều so với trong máy ảo có cùng cấu hình trên máy chủ chạy Windows Server 2016. Trong một số thử nghiệm, bài đọc / tốc độ ghi qua mạng vào VM trên Windows Server 2019 thấp hơn gần ba lần so với trên WS2016 (sao chép qua SMB, SSH / SCP đã được thử nghiệm). Trong bài viết này, tôi đã cố gắng mô tả một số phương pháp khác nhau để cải thiện hiệu suất mạng của máy ảo Hyper-V chạy trên Windows Server 2019 (và các bản dựng Windows 10 và 11 mới nhất).
Nhận phân đoạn cân bằng (RSC) trong Hyper-V vSwitch
Trước hết, bạn nên lưu ý Tiếp nhận hợp tác phân đoạn (RSC) tính năng đã xuất hiện trong Hyper-V trên Windows Server 2019/2022 (và Windows 10 1809+). Kết hợp phân đoạn nhận được sử dụng ở cấp chuyển mạch ảo (vSwitch). RSC cho phép giảm tải CPU và tăng thông lượng mạng bằng cách kết hợp nhiều phân đoạn TCP thành những phân đoạn lớn hơn . Hiệu suất mạng được cải thiện vì các phân đoạn lớn được xử lý nhanh hơn nhiều phân đoạn nhỏ hơn.
Trong các phiên bản Hyper-V trước (Windows Server 2016 / 2012R2), chỉ hỗ trợ chế độ Cân nhắc phân đoạn nhận phần cứng ở cấp NIC.Nếu hỗ trợ RSC được bật, nó có thể dẫn đến mạng thêm trễ trong một số cấu hình phần cứng.
Sự cố xảy ra cả trong các phiên bản GUI đầy đủ của Windows Server 2019 và trong Windows Hyper-V Server miễn phí.Theo mặc định, RSC được bật cho tất cả các vSwitch bên ngoài trên Windows Server 2019.
Bạn có thể kiểm tra xem RSC có được bật cho các công tắc ảo hay không bằng cách sử dụng lệnh:
Get-VMSwitch | Chọn-Đối tượng * RSC *
Bạn có thể tắt sử dụng RSC cho lưu lượng IPv4 trên bộ điều hợp mạng khách bằng lệnh sau:
Disable-NetAdapterRsc -Tên "Ethernet" -IPv4
Kiểm tra xem tốc độ sao chép trong Hyper-V VM có tăng lên không sau khi tắt RSC. Nếu tốc độ mạng được cải thiện, bạn có thể tắt RSC trên công tắc ảo mà máy ảo được kết nối.
Bạn có thể kiểm tra thông lượng mạng của mình bằng công cụ iperf.Để tắt phần mềm RSC cho một công tắc ảo cụ thể, hãy chạy lệnh:
Set-VMSwitch -Tên vSwitchName -EnableSoftwareRsc $ false
Bạn có thể bật / tắt RSC một cách nhanh chóng, nó sẽ không ảnh hưởng đến bất kỳ kết nối nào đang hoạt động.
Hoặc bạn có thể tắt hoàn toàn RSC trên máy chủ Windows của mình:
netsh int tcp set global rsc =disable
Chế độ hàng đợi máy ảo (VMQ) trong trình điều khiển bộ điều hợp mạng
Trong một số trường hợp, nếu VMQ (Hàng đợi Máy ảo) được bật trong trình điều khiển bộ điều hợp mạng của máy chủ Hyper-V vật lý, nó có thể dẫn đến hiệu suất mạng kém trong máy ảo Hyper-V. VMQ là một tính năng phần cứng và nếu nó không được phần cứng của bạn hỗ trợ nhưng được bật trong trình điều khiển, nó có thể dẫn đến mất gói và tăng độ trễ mạng. Sự cố là điển hình đối với bộ điều hợp mạng Broadcom Gigabit và xảy ra trong tất cả các phiên bản Hyper-V (Windows Server 2012 R2 / 2016/2019).
VMQ được thiết kế để cải thiện hiệu suất mạng bằng cách chuyển tiếp trực tiếp các gói từ bộ điều hợp mạng vật lý tới các máy ảo.Bạn có thể tắt VMQ trong các thuộc tính của trình điều khiển bộ điều hợp mạng của mình.
Hoặc bạn có thể hiển thị danh sách bộ điều hợp mạng có hỗ trợ VMQ và trạng thái của chúng bằng PowerShell:
Get-NetAdapterVmq
Để tắt VMQ cho một NIC cụ thể, hãy chạy lệnh bên dưới (bộ điều hợp mạng sẽ không khả dụng trong vài giây):
Set-NetAdapterVmq -Tên “NICName” -Enabled $ False
Sau khi tắt VMQ, tốt hơn nên khởi động lại máy chủ và kiểm tra hiệu suất mạng.
Đảm bảo rằng các chính sách giới hạn băng thông QoS bị tắt trong Windows.Tối ưu hóa cài đặt TCP cho Hyper-V trên Windows Server 2019
Lưu cài đặt TCP hiện tại trên máy chủ Hyper-V của bạn và áp dụng cài đặt mới sẽ làm cho cài đặt TCP trong Windows Server 2019 gần giống với cài đặt của Windows Server 2016.
Lưu cài đặt hiện tại:
Get-NetTCPSetting -SettingName Datacenter, DatacenterCustom, InternetCustom, Internet | select SettingName, CongestionProvider, CwndRestart, ForceWS | Export-csv c:\ backup \ ws2019_network_stack_settings_nettcp_backup.csv
Chỉ áp dụng các cài đặt sau trong Windows Server 2019 hoặc Hyper-V 2019.
Áp dụng cài đặt NetTCP mới cho mạng LAN:
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom, Datacenter -ForceWS Tắt
Đối với mạng WAN:
Set-NetTCPSetting -SettingName InternetCustom, Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom, Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom, Internet -ForceWS Disabled
Tắt các phương pháp tối ưu hóa mạng RSS và RSC của mạng ở cấp ngăn xếp TCP:
netsh int tcp show global
netsh int tcp set global RSS =Disabled
netsh int tcp set global RSC =Disabled
hoặc ở cấp độ NIC:
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Nhận tỷ lệ bên" -DisplayValue "Đã tắt" –NoRestart
Tắt vRSS cho tất cả các máy ảo:
Get-VM | Set-VMNetworkAdapter -VrssEnabled $ FALSE
Tắt tải trọng gửi lớn (LSO) trên NIC:
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Khởi động lại-NetAdapter
- Sắp xếp phân đoạn thu âm (IPv4 / IPv6) =Đã tắt
- Tải trọng gửi lớn V2 (IPv4 / IPv6) =Đã tắt
Các cài đặt ngăn xếp TCP này sẽ làm cho cài đặt giao thức mạng của Windows Server 2019 tương tự như cài đặt của các phiên bản Windows Server trước.