Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

หลายครั้งที่ฉันเจอสถานการณ์ที่ไฟล์ถูกคัดลอกช้ากว่ามากจาก/ไปยังเครื่องเสมือนบนโฮสต์ Hyper-V ที่ใช้ Windows Server 2019 มากกว่าใน VM ของการกำหนดค่าเดียวกันบนโฮสต์ที่ใช้ Windows Server 2016 ในการทดสอบบางอย่าง การอ่าน / ความเร็วในการเขียนบนเครือข่ายไปยัง VM บน Windows Server 2019 นั้นต่ำกว่าใน WS2016 เกือบสามเท่า (การคัดลอกผ่าน SMB ทดสอบ SSH/SCP แล้ว) ในบทความนี้ ฉันพยายามอธิบายวิธีการต่างๆ หลายวิธีในการปรับปรุงประสิทธิภาพเครือข่ายของเครื่องเสมือน Hyper-V ที่ทำงานบน Windows Server 2019 (และ Windows 10 และ 11 บิลด์ล่าสุด)

รับ Segment Coalescing (RSC) ใน Hyper-V vSwitch

ก่อนอื่น คุณควรสังเกต Receive Segment Coalescing (RSC) คุณลักษณะที่ปรากฏใน Hyper-V บน Windows Server 2019/2022 (และ Windows 10 1809+) การรวมกลุ่มการรับจะใช้ที่ระดับสวิตช์เสมือน (vSwitch) RSC ช่วยลดภาระของ CPU และเพิ่มทรูพุตของเครือข่ายโดยการรวมกลุ่ม TCP หลายส่วนเป็นกลุ่มที่ใหญ่ขึ้น ประสิทธิภาพของเครือข่ายได้รับการปรับปรุงเนื่องจากกลุ่มขนาดใหญ่ได้รับการประมวลผลเร็วกว่ากลุ่มที่เล็กกว่าจำนวนมาก

ใน Hyper-V เวอร์ชันก่อนหน้า (Windows Server 2016/2012R2) เฉพาะโหมด Receive Segment Coalescing ของฮาร์ดแวร์เท่านั้นที่ได้รับการสนับสนุนที่ระดับ NIC

หากเปิดใช้งานการสนับสนุน RSC อาจส่งผลให้เครือข่ายล่าช้าเป็นพิเศษในการกำหนดค่าฮาร์ดแวร์บางอย่าง

ปัญหานี้เกิดขึ้นใน Windows Server 2019 เวอร์ชันเต็ม GUI และใน Windows Hyper-V Server ฟรี

ตามค่าเริ่มต้น RSC จะเปิดใช้งานสำหรับ vSwitches ภายนอกทั้งหมดบน Windows Server 2019

คุณสามารถตรวจสอบว่าเปิดใช้งาน RSC สำหรับสวิตช์เสมือนโดยใช้คำสั่ง:

Get-VMSwitch | Select-Object *RSC*

คุณสามารถปิดใช้งานโดยใช้ RSC สำหรับการรับส่งข้อมูล IPv4 บนอะแดปเตอร์เครือข่ายไคลเอ็นต์โดยใช้คำสั่งต่อไปนี้:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

ตรวจสอบว่าความเร็วในการคัดลอกใน Hyper-V VM เพิ่มขึ้นหลังจากปิดใช้งาน RSC หรือไม่ หากความเร็วเครือข่ายดีขึ้น คุณสามารถปิดใช้งาน RSC บนสวิตช์เสมือนที่ VM เชื่อมต่ออยู่ได้

คุณสามารถตรวจสอบปริมาณงานเครือข่ายของคุณโดยใช้เครื่องมือ iperf

หากต้องการปิดใช้งานซอฟต์แวร์ RSC สำหรับสวิตช์เสมือนเฉพาะ ให้เรียกใช้คำสั่ง:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

คุณสามารถเปิด/ปิดใช้งาน RSC ได้ทันที ซึ่งจะไม่ส่งผลต่อการเชื่อมต่อที่ใช้งานอยู่

หรือคุณสามารถปิดการใช้งาน RSC บนโฮสต์ Windows ของคุณได้อย่างสมบูรณ์:

netsh int tcp set global rsc=disabled

โหมด Virtual Machine Queue (VMQ) ในไดรเวอร์อะแดปเตอร์เครือข่าย

ในบางกรณี ถ้า VMQ (Virtual Machine Queue) ถูกเปิดใช้งานในโปรแกรมควบคุมอะแดปเตอร์เครือข่ายของโฮสต์ Hyper-V ที่มีอยู่จริง ซึ่งอาจส่งผลให้ประสิทธิภาพเครือข่ายต่ำในเครื่องเสมือน Hyper-V VMQ เป็นคุณลักษณะของฮาร์ดแวร์ และหากฮาร์ดแวร์ของคุณไม่รองรับแต่เปิดใช้งานในไดรเวอร์ อาจส่งผลให้แพ็กเก็ตสูญหายและเพิ่มเวลาแฝงของเครือข่าย ปัญหาเป็นเรื่องปกติของอะแดปเตอร์เครือข่าย Broadcom Gigabit และเกิดขึ้นใน Hyper-V ทุกรุ่น (Windows Server 2012 R2/2559/2019)

VMQ ได้รับการออกแบบมาเพื่อปรับปรุงประสิทธิภาพของเครือข่ายโดยการส่งต่อแพ็กเก็ตโดยตรงจากอะแดปเตอร์เครือข่ายจริงไปยังเครื่องเสมือน

คุณสามารถปิดใช้งาน VMQ ได้ในคุณสมบัติของไดรเวอร์อะแดปเตอร์เครือข่ายของคุณ

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

หรือคุณสามารถแสดงรายการอะแดปเตอร์เครือข่ายที่รองรับ VMQ และสถานะโดยใช้ PowerShell:

Get-NetAdapterVmq

ในการปิดใช้งาน VMQ สำหรับ NIC เฉพาะ ให้เรียกใช้คำสั่งด้านล่าง (อะแดปเตอร์เครือข่ายจะไม่สามารถใช้ได้เป็นเวลาสองสามวินาที):

Set-NetAdapterVmq -Name “NICName” -Enabled $False

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

หลังจากปิดใช้งาน VMQ จะเป็นการดีกว่าที่จะรีสตาร์ทโฮสต์และตรวจสอบประสิทธิภาพของเครือข่าย

ตรวจสอบให้แน่ใจว่านโยบายการจำกัดแบนด์วิดท์ QoS ถูกปิดใช้งานใน Windows

ปรับการตั้งค่า TCP ให้เหมาะสมสำหรับ Hyper-V บน Windows Server 2019

บันทึกการตั้งค่า TCP ปัจจุบันบนโฮสต์ Hyper-V ของคุณ และใช้การตั้งค่าใหม่ที่จะทำให้การตั้งค่า TCP ใน Windows Server 2019 ใกล้เคียงกับ Windows Server 2016

บันทึกการตั้งค่าปัจจุบัน:

Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|select SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

ตามค่าเริ่มต้นใน Windows Server 2019 และ Windows 10 1709+ CUBIC การใช้งาน TCP ถูกนำมาใช้ อัลกอริธึมนี้ได้รับการปรับให้เหมาะสมสำหรับเครือข่ายความเร็วสูงที่มีความหน่วงแฝงสูง (ใช้โดยค่าเริ่มต้นในเคอร์เนล Linux 2.6.19 และใหม่กว่า)

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

ใช้การตั้งค่าต่อไปนี้ใน Windows Server 2019 หรือ Hyper-V 2019 เท่านั้น

ใช้การตั้งค่า NetTCP ใหม่สำหรับ LAN:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

สำหรับ WAN:

Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

ปิดใช้งานวิธีการเพิ่มประสิทธิภาพเครือข่าย RSS และ RSC ที่ระดับสแต็ก TCP:

netsh int tcp show global
netsh int tcp set global RSS=Disabled
netsh int tcp set global RSC=Disabled

หรือในระดับ 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 "Receive Side Scaling" -DisplayValue "Disabled" –NoRestart

ปิดใช้งาน vRSS สำหรับ VM ทั้งหมด:

Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE

ปิดการใช้งาน Large Send Offload (LSO) บน 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 | Restart-NetAdapter

คุณยังสามารถปิดใช้งานตัวเลือกเหล่านี้ได้ในแท็บขั้นสูงของคุณสมบัติของอะแดปเตอร์เครือข่าย:

  • Recv Segment Coalescing (IPv4/IPv6) =ปิดใช้งาน
  • Large Send Offload V2 (IPv4/IPv6) =ปิดการใช้งาน

ประสิทธิภาพเครือข่ายไม่ดีบน Hyper-V VM ใน Windows Server 2019

การตั้งค่าสแต็ก TCP เหล่านี้จะทำให้การตั้งค่าโปรโตคอลเครือข่าย Windows Server 2019 คล้ายกับการตั้งค่า Windows Server เวอร์ชันก่อนหน้า