কম্পিউটার টিউটোরিয়াল

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

আমি অনেকবার এমন পরিস্থিতির সম্মুখীন হয়েছি যখন উইন্ডোজ সার্ভার ২০১৯ চালিত হাইপার-V হোস্টে ভার্চুয়াল মেশিন থেকে/এ ফাইল কপি করা উইন্ডোজ সার্ভার ২০১৬-এ একই কনফিগারেশনের VM-এ তুলনায় অনেক ধীর হয়। কিছু টেস্টে, উইন্ডোজ সার্ভার ২০১৯-এ VM-এ নেটওয়ার্কের মাধ্যমে রিড/রাইট স্পিড WS2016-এ তুলনায় প্রায় তিন গুণ কম (SMB, SSH/SCP কপি টেস্ট করা হয়েছিল)। এই আর্টিকেলে, আমি উইন্ডোজ সার্ভার ২০১৯ (এবং नवীনতম উইন্ডোজ ১০ এবং ১১ বিল্ড) চলমান হাইপার-V ভার্চুয়াল মেশিনের নেটওয়ার্ক পারফরম্যান্স উন্নত করার বেশ কিছু ভিন্ন পদ্ধতি বর্ণনা করার চেষ্টা করেছি।

হাইপার-V vSwitch-এ Receive Segment Coalescing (RSC)

প্রথমে, আপনাকে Receive Segment Coalescing (RSC) ফিচারটি লক্ষ্য করতে হবে যা হাইপার-V-এ উইন্ডোজ সার্ভার ২০১৯/২০২২ (এবং উইন্ডোজ ১০ ১৮০৯+) তে যোগ হয়েছে। Receive Segment Coalescing ভার্চুয়াল স্যুইচ লেভেলে (vSwitch) ব্যবহৃত হয়। RSC একাধিক TCP সেগমেন্টকে বড় সেগমেন্টে একত্রিত করে CPU লোড কমাতে এবং নেটওয়ার্ক থ্রুপুট বাড়াতে সাহায্য করে। বড় সেগমেন্ট ছোট সেগমেন্টের তুলনায় দ্রুত প্রসেস হয় বলে নেটওয়ার্ক পারফরম্যান্স উন্নত হয়।

পুরানো হাইপার-V সংস্করণগুলিতে (উইন্ডোজ সার্ভার ২০১৬/২০১২R2), শুধুমাত্র হার্ডওয়্যার Receive Segment Coalescing মোড NIC লেভেলে সমর্থিত ছিল।

যদি RSC সাপোর্ট সক্ষম থাকে, তবে কিছু হার্ডওয়্যার কনফিগারেশনে এটি অতিরিক্ত নেটওয়ার্ক ডিলে তৈরি করতে পারে।

সমস্যাটি উইন্ডোজ সার্ভার ২০১৯ ফুল GUI সংস্করণ এবং ফ্রি উইন্ডোজ হাইপার-V সার্ভার উভয়তেই ঘটে।

ডিফল্টভাবে, উইন্ডোজ সার্ভার ২০১৯-এ সব এক্সটার্নাল vSwitch-এ RSC সক্রিয় থাকে।

আপনি যাচাই করতে পারেন যে ভার্চুয়াল স্যুইচগুলোর জন্য RSC সক্রিয় আছে কিনা এই কমান্ড দিয়ে:

Get-VMSwitch | Select-Object *RSC*

আপনি ক্লায়েন্ট নেটওয়ার্ক অ্যাডাপ্টারে IPv4 ট্রাফিকের জন্য RSC ব্যবহার ডিজেবল করতে পারেন এই কমান্ড দিয়ে:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

RSC ডিজেবল করার পর হাইপার-V VM-এ কপি স্পিড বেড়েছে কিনা চেক করুন। যদি নেটওয়ার্ক স্পিড উন্নত হয়, তবে আপনি VM সংযুক্ত ভার্চুয়াল স্যুইচে RSC ডিজেবল করতে পারেন।

আপনি iperf টুল ব্যবহার করে আপনার নেটওয়ার্ক থ্রুপুট চেক করতে পারেন।

নির্দিষ্ট ভার্চুয়াল স্যুইচের জন্য সফ্টওয়্যার RSC ডিজেবল করতে এই কমান্ডটি চালান:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

আপনি RSC অন-দ-ফ্লাই সক্ষম/ডিজেবল করতে পারেন, এটি কোনো সক্রিয় সংযোগকে প্রভাবিত করবে না।

অথবা আপনি আপনার উইন্ডোজ হোস্টে সম্পূর্ণ RSC ডিজেবল করতে পারেন:

netsh int tcp set global rsc=disabled

নেটওয়ার্ক অ্যাডাপ্টার ড্রাইভারে Virtual Machine Queue (VMQ) মোড

কিছু ক্ষেত্রে, যদি ফিজিক্যাল হাইপার-V হোস্টের নেটওয়ার্ক অ্যাডাপ্টার ড্রাইভারে VMQ (Virtual Machine Queue) সক্ষম থাকে, তবে এটি হাইপার-V ভার্চুয়াল মেশিনে খারাপ নেটওয়ার্ক পারফরম্যান্সের কারণ হতে পারে। VMQ একটি হার্ডওয়্যার ফিচার এবং যদি আপনার হার্ডওয়্যার এটি সাপোর্ট না করে কিন্তু ড্রাইভারে এটি সক্ষম থাকে, তবে এটি প্যাকেট লস এবং নেটওয়ার্ক লেটেন্সি বাড়াতে পারে। এই সমস্যাটি ব্রডকম গিগাবিট নেটওয়ার্ক অ্যাডাপ্টারের জন্য টিপিক্যাল এবং সব হাইপার-V সংস্করণে (উইন্ডোজ সার্ভার ২০১২ R2/২০১৬/২০১৯) ঘটে।

VMQ নেটওয়ার্ক পারফরম্যান্স উন্নত করার জন্য ডিজাইন করা হয়েছে একটি ফিজিক্যাল নেটওয়ার্ক অ্যাডাপ্টার থেকে ভার্চুয়াল মেশিনে সরাসরি প্যাকেট ফরওয়ার্ড করে।

আপনি আপনার নেটওয়ার্ক অ্যাডাপ্টার ড্রাইভারের প্রপার্টিতে VMQ ডিজেবল করতে পারেন।

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

অথবা আপনি পাওয়ারশেল ব্যবহার করে VMQ সাপোর্টসহ নেটওয়ার্ক অ্যাডাপ্টারগুলির তালিকা এবং তাদের স্ট্যাটাস দেখাতে পারেন:

Get-NetAdapterVmq

নির্দিষ্ট NIC-এ VMQ ডিজেবল করতে নিচের কমান্ডটি চালান (নেটওয়ার্ক অ্যাডাপ্টার কয়েক সেকেন্ডের জন্য অনুপলব্ধ থাকবে):

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

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

VMQ ডিজেবল করার পর, হোস্ট রিস্টার্ট করা ভালো এবং নেটওয়ার্ক পারফরম্যান্স চেক করুন।

নিশ্চিত করুন যে উইন্ডোজে QoS ব্যান্ডউইথ লিমিট পলিসিগুলো ডিজেবল আছে।

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V-এর জন্য TCP সেটিংস অপ্টিমাইজ করুন

আপনার হাইপার-V হোস্টে বর্তমান TCP সেটিংস সংরক্ষণ করুন এবং নতুন সেটিংস প্রয়োগ করুন যা উইন্ডোজ সার্ভার ২০১৯-এ TCP সেটিংসকে উইন্ডোজ সার্ভার ২০১৬-এর মতো করে দেবে।

বর্তমান সেটিংস সংরক্ষণ করুন:

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

ডিফল্টভাবে উইন্ডোজ সার্ভার ২০১৯ এবং উইন্ডোজ ১০ ১৭০৯+-এ, TCP-এর CUBIC ইমপ্লিমেন্টেশন ব্যবহার করা হয়। এই অ্যালগরিদম হাই-স্পিড নেটওয়ার্কে হাই লেটেন্সির জন্য অপ্টিমাইজড (লিনাক্স কার্নেল ২.৬.১৯ এবং তার পরবর্তী সংস্করণে ডিফল্টভাবে এটি ব্যবহৃত হয়)।

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

নিচের সেটিংস শুধু উইন্ডোজ সার্ভার ২০১৯ বা হাইপার-V ২০১৯-এ প্রয়োগ করুন।

LAN-এর জন্য নতুন NetTCP সেটিংস প্রয়োগ করুন:

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

TCP স্ট্যাক লেভেলে নেটওয়ার্ক RSS এবং RSC অপ্টিমাইজেশন মেথড ডিজেবল করুন:

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

সব VM-এর জন্য vRSS ডিজেবল করুন:

Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE

NIC-এ Large Send Offload (LSO) ডিজেবল করুন:
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

আপনি আপনার নেটওয়ার্ক অ্যাডাপ্টার প্রপার্টির Advanced ট্যাবে এই অপশনগুলিও ডিজেবল করতে পারেন:

  • Recv Segment Coalescing (IPv4/IPv6) = Disabled
  • Large Send Offload V2 (IPv4/IPv6) = Disabled

উইন্ডোজ সার্ভার ২০১৯-এ হাইপার-V VM-তে খারাপ নেটওয়ার্ক পারফরম্যান্স

এই TCP স্ট্যাক সেটিংস উইন্ডোজ সার্ভার ২০১৯ নেটওয়ার্ক প্রোটোকল সেটিংসকে পূর্ববর্তী উইন্ডোজ সার্ভার সংস্করণগুলোর মতো করে দেবে।

  1. Windows Server 2019-এ ব্যাকআপ ও রিস্টোর করার পদ্ধতি

  2. Windows Server 2019-এ Hyper-V রোল ইনস্টল করা

  3. Hyper-V 2019-এ ভার্চুয়াল স্যুইচ কনফিগারেশন

  4. উইন্ডোজ ৭, ৮ এবং ১০-এ 'The RPC Server is Unavailable' সমাধান