বিভিন্ন হাইপারভাইজারে (VMWare, KVM, Hyper-V, ইত্যাদি) ভার্চুয়াল মেশিন তৈরি করার সময়, আপনি দেখতে পারেন যে কখনও কখনও একটি ভার্চুয়াল মেশিন এটিতে নির্ধারিত সমস্ত ভার্চুয়াল প্রসেসর সকেট (vCPU) দেখতে নাও পারে। আমাদের ক্ষেত্রে, একটি কেভিএম ভার্চুয়াল মেশিনে 8টি ভিসিপিইউ বরাদ্দ করা হয়েছিল এবং অতিথি ওএস হিসাবে উইন্ডোজ 10 এটিতে ইনস্টল করা হয়েছিল। যাইহোক, উইন্ডোজ এই ভিসিপিইউগুলিকে পৃথক প্রসেসর হিসাবে সনাক্ত করেছে (কোর নয়) এবং এটি তাদের মধ্যে মাত্র 2টি ব্যবহার করতে পারে।
Windows 10 ভার্চুয়াল মেশিন শুধুমাত্র 2 কোর ব্যবহার করে
আপনি উইন্ডোজ ডিভাইস ম্যানেজার খুললে, আপনি নিশ্চিত করতে পারেন যে সমস্ত বরাদ্দ করা কোর 8টি পৃথক ভার্চুয়াল প্রসেসর হিসাবে দৃশ্যমান QEMU ভার্চুয়াল CPU সংস্করণ 2.5+ .
একই সময়ে, Windows 10 বৈশিষ্ট্য (কম্পিউটার -> বৈশিষ্ট্য) এবং টাস্ক ম্যানেজার দেখায় যে শুধুমাত্র 2টি QEMU ভার্চুয়াল প্রসেসর উপলব্ধ।
এর মানে হল যে Windows 10 শুধুমাত্র 2 কোর ব্যবহার করতে সক্ষম হবে না কেন আপনি তাদের মধ্যে কতগুলি যোগ করবেন। একই সময়ে, একই হাইপারভাইজারে উইন্ডোজ সার্ভার 2016 চালিত একটি ভার্চুয়াল সার্ভার এটিতে বরাদ্দ করা 16টি vCPU দেখতে পারে৷
উইন্ডোজে সমর্থিত প্রসেসরের সংখ্যা
সমস্যা হল যে ডেস্কটপ উইন্ডোজ সংস্করণে (উইন্ডোজ 10/8.1/7) সর্বোচ্চ সংখ্যক শারীরিক প্রসেসর (সকেট) এর উপর সীমাবদ্ধতা রয়েছে একটি কম্পিউটার ব্যবহার করতে পারে:
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10 ওয়ার্কস্টেশন – 4 CPU পর্যন্ত
- Windows Server 2016 – 64 CPU পর্যন্ত
যাইহোক, এই সীমাবদ্ধতা কোরের সংখ্যার সাথে সম্পর্কিত নয়। আপনার ভার্চুয়াল মেশিনের কর্মক্ষমতা উন্নত করার জন্য, আপনি আরও কোর সহ একটি প্রসেসর ব্যবহার করতে পারেন . বেশিরভাগ হাইপারভাইজার প্রসেসর, প্রসেসর কোর বা এমনকি থ্রেড হিসাবে ভিসিপিইউ সরবরাহ করতে পারে। এর মানে হল 8টি vCPU-এর পরিবর্তে, আপনি প্রতি সকেটে 4টি সহ 2টি vCPU (2 সকেট) যোগ করতে পারেন। চলুন দেখি কিভাবে ভার্চুয়াল প্রসেসরকে বিভিন্ন হাইপারভাইজারে কোর হিসেবে বরাদ্দ করা যায় এবং আধুনিক প্রসেসরে ব্যবহৃত NUMA আর্কিটেকচারের সাথে এটিকে কিভাবে আবদ্ধ করা যায়।
KVM-এ ভার্চুয়াল কোর এবং vCPU ম্যানেজ করা
আমার KVM ভার্চুয়াল মেশিনে Windows 10 চলছে , সমস্ত নির্ধারিত ভার্চুয়াল কোর আলাদা প্রসেসর হিসাবে বিবেচিত হয়।
একটি ভার্চুয়াল মেশিনে বরাদ্দকৃত সমস্ত CPU সম্পদ ব্যবহার করতে, এটি অবশ্যই একটি 8 কোর প্রসেসর দেখতে হবে, 8টি vCPU-এর পরিবর্তে দুটি থ্রেডে 4 কোর সহ 4টি প্রতিটি কোর সহ 2টি vCPU বা 1টি vCPU দেখতে হবে৷ চলুন KVM ভার্চুয়াল মেশিনের জন্য ভার্চুয়াল কোরের বরাদ্দ পরিবর্তন করার চেষ্টা করি।
আপনার ভার্চুয়াল মেশিন বন্ধ করুন:
# virsh shutdown w10testvm
– যেখানে w10testvm আপনার ভার্চুয়াল মেশিনের নাম
virsh
ব্যবহার করে কনসোল থেকে KVM ভার্চুয়াল মেশিন পরিচালনার দিকগুলি রয়েছে . KVM ভার্চুয়াল মেশিনের বর্তমান XML কনফিগারেশন প্রদর্শন করুন:
# virsh dumpxml w10testvm
VM CPU সেটিংস বর্ণনা করার জন্য আমাদের একটি ব্লক প্রয়োজন:
<vcpu placement='static'>8</vcpu> <cputune> <shares>1000</shares> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <bootmenu enable='yes'/> </os> <features> <acpi/> <apic/> <pae/> </features>
আপনি দেখতে পাচ্ছেন, এখানে 8টি vCPU সেট করা আছে। কনফিগারেশন পরিবর্তন করা যাক:
# virsh edit w10testvm
পরে নিম্নলিখিত ব্লক যোগ করুন :
<cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='4' threads='2'/> </cpu>
কোথায়:
host-passthrough
ইমুলেশন মোড যেখানে ভার্চুয়াল মেশিন ক্লাস্টার নোডের ফিজিক্যাল প্রসেসর দেখেsockets='1'
নির্দেশ করে যে একটি vCPU (সকেট)
আছে cores='4'
প্রসেসরে প্রতি সকেটে 4টি কোর রয়েছেthreads='2'
অর্থাৎ প্রতিটি কোরে 2টি থ্রেড আছে
কনফিগারেশন ফাইলটি সংরক্ষণ করুন এবং ভার্চুয়াল মেশিন শুরু করুন। Windows 10 গেস্ট ভিএম-এ লগ ইন করুন, টাস্ক ম্যানেজার বা রিসোর্স মনিটর চালান এবং নিশ্চিত করুন যে Windows সমস্ত বরাদ্দকৃত ভার্চুয়াল কোর দেখতে পাচ্ছে৷
হোস্টের একটি ফিজিক্যাল প্রসেসর, Intel(R) Xeon(R) Silver 4114 CPU , এখন সিস্টেম বৈশিষ্ট্যে ভার্চুয়ালের পরিবর্তে প্রদর্শিত হয়৷
এখানে আমরা কীভাবে VM-এর জন্য ভারী লোড সমস্যাটি সমাধান করতে পেরেছি কারণ দুটি কোর অ্যাপগুলি সঠিকভাবে কাজ করার জন্য যথেষ্ট ছিল না৷
একটি VMWare VM এর জন্য প্রতি vCPU কোরের সংখ্যা সেট করা
আপনি vSphere ক্লায়েন্ট ইন্টারফেসে একটি VMWare ভার্চুয়াল মেশিনের জন্য vCPU উপস্থাপনার উপায় পরিবর্তন করতে পারেন৷
- VM বন্ধ করুন এবং সেটিংস খুলুন;
- CPU প্রসারিত করুন বিভাগ;
- ভিএম কনফিগারেশন পরিবর্তন করুন যাতে গেস্ট ওএস প্রতিটি 4টি কোর সহ 2টি প্রসেসর দেখতে পারে। সকেট প্রতি কোর মান পরিবর্তন করুন 4 থেকে . এর মানে হল গেস্ট ওএস দুটি 4-কোর CPU দেখতে পাবে (প্রতি সকেটে 4 কোর সহ 2 সকেট);
- পরিবর্তনগুলি সংরক্ষণ করুন এবং VM চালান৷ ৷
ভার্চুয়াল মেশিন vCPU এবং NUMA আর্কিটেকচার
ভার্চুয়াল মেশিনে ভিসিপিইউ এবং কোর বরাদ্দ করার আরও কিছু দিক রয়েছে যা আপনাকে অবশ্যই বুঝতে হবে।
প্রতি সকেটের কোরের সংখ্যা নির্ধারণ করার সময়, আপনার NUMA আর্কিটেকচার আছে কিনা তা নিশ্চিত করুন (বেশিরভাগ আধুনিক CPU-তে ব্যবহৃত)। আপনার ফিজিক্যাল সকেটে (NUMA নোড) উপলব্ধ কোরের সংখ্যার চেয়ে একটি VM-তে প্রতি সকেটের বেশি কোর (এবং vCPU-এর মোট সংখ্যা) নির্ধারণ করার পরামর্শ দেওয়া হয় না। একটি একক শারীরিক NUMA নোডে রাখা হলে, একটি ভার্চুয়াল মেশিন নির্দিষ্ট NUMA নোডে উপলব্ধ দ্রুত স্থানীয় RAM ব্যবহার করতে সক্ষম হবে। অন্যথায়, প্রক্রিয়াগুলিকে অন্য NUMA নোড থেকে প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে (যা বেশি সময় নেয়)।
আপনি যদি একটি VM-এ দুটি পৃথক ভার্চুয়াল সকেট বরাদ্দ করেন, হাইপারভাইজার সেগুলিকে বিভিন্ন NUMA নোডে চালাতে পারে। এটি VM কর্মক্ষমতা প্রভাবিত করবে৷
যদি প্রয়োজনীয় vCPU-র সংখ্যা 1টি ফিজিক্যাল সকেটে (NUMA নোড) কোরের সংখ্যার চেয়ে বেশি হয়, তাহলে প্রয়োজনীয় সংখ্যক কোর সহ বেশ কয়েকটি ভার্চুয়াল সকেট (প্রসেসর) তৈরি করুন। এছাড়াও এটি একটি বিজোড় সংখ্যক প্রসেসর ব্যবহার করার পরামর্শ দেওয়া হয় না (1 vCPU যোগ করা ভাল)।
এটি ভার্চুয়াল মেশিনের কর্মক্ষমতা বজায় রাখার অনুমতি দেয়।
উদাহরণস্বরূপ, প্রতি সকেটে 10 কোর সহ একটি 2-প্রসেসর হোস্টের জন্য নিম্নলিখিত কনফিগারেশন ব্যবহার করার পরামর্শ দেওয়া হয় (হাইপার সহ মোট 40টি vCPU পাওয়া যায় —থ্রেডিং ) যখন আপনি একটি VM এর জন্য vCPUs কনফিগার করেন:
vCPU নম্বর প্রয়োজন | VM সেটিংসে ভার্চুয়াল সকেটের সংখ্যা | ভিএম সেটিংসে একটি ভার্চুয়াল প্রসেসর প্রতি কোরের সংখ্যা |
1 | 1 | 1 |
…… | ||
10 | 1 | 10 |
11 | অনুকূল নয় | |
12 | 2 | 6 |
…… | ||
20 | 2 | 10 |
উদাহরণস্বরূপ, 16 vCPU সহ একটি VM চলমান Microsoft SQL সার্ভার 2016 এন্টারপ্রাইজ সংস্করণ (প্রতি সকেটে 2 কোর সহ 8 সকেটের কনফিগারেশনে ) প্রতি সকেট 2 সকেট x 8 কোর সহ একটি VM-এর কার্যক্ষমতা আরও খারাপ হবে .
এছাড়াও মনে রাখবেন যে কিছু অ্যাপ্লিকেশানগুলি ফিজিক্যাল সকেটের সংখ্যার উপর নির্ভর করে লাইসেন্স করা হয় (যেমন এটি আগের SQL সার্ভার সংস্করণে ছিল)। কখনও কখনও কম সংখ্যক কোর সহ একাধিক প্রসেসরের চেয়ে একটি মাল্টিকোর প্রসেসর লাইসেন্স করা বেশি লাভজনক।