আপনি যখন ভার্চুয়ালাইজেশন হোস্টে (VMWare ESXi বা Hyper-V) চালিত VM পরিচালনা করেন এবং কর্মক্ষমতা সংক্রান্ত সমস্যাগুলি বিশ্লেষণ করেন, তখন আপনি প্রায়শই এমন পরিস্থিতির মুখোমুখি হন যখন গেস্ট OS-এ উপলব্ধ মেমরির আকার অপারেশন সিস্টেমের তুলনায় অনেক কম হয় (বা নির্ধারিত হয়) এটা)। উদাহরণস্বরূপ, একটি ভার্চুয়াল মেশিনে 8 গিগাবাইট মেমরি বরাদ্দ করা হয়, টাস্ক ম্যানেজার দেখায় যে 1 গিগাবাইট বিনামূল্যে যদিও সমস্ত চলমান প্রক্রিয়া 3 গিগাবাইটের কম খরচ করে। বাকি ৪ জিবি কোথায়?
একটি নিয়ম হিসাবে, হাইপারভাইজারে মেমরি ওভারকমিট বৈশিষ্ট্য ব্যবহার করার কারণে এই আচরণটি ঘটে।
মেমরি ওভারকমিট একটি হাইপারভাইজার বৈশিষ্ট্য যা আপনাকে একটি ফিজিক্যাল হোস্টের তুলনায় ভার্চুয়াল মেশিনে বেশি মেমরি বরাদ্দ করতে দেয়, কিন্তু কোনো গ্যারান্টি ছাড়াই যে সমস্ত অনুরোধ করা মেমরি একটি নির্দিষ্ট মুহূর্তে বরাদ্দ করা যেতে পারে। বর্তমান হোস্ট লোডের উপর নির্ভর করে ভিএমগুলির মধ্যে গতিশীল মেমরি বিতরণের কারণে মেমরি ওভারকমিট ভার্চুয়াল মেশিনগুলিকে আরও ঘনত্বে বরাদ্দ করার অনুমতি দেয় (অলস ভিএমগুলির সংস্থানগুলি আরও লোডের মধ্যে পুনরায় বিতরণ করা যেতে পারে)।
VMWare-এ মেমরি ওভারকমিট বাস্তবায়নের একটি পদ্ধতি হল মেমরি বেলুনিং . Hyper-V-এ, একই বৈশিষ্ট্য ডাইনামিক মেমরি দ্বারা প্রয়োগ করা হয় .
দ্রষ্টব্য . যাইহোক, VMWare এবং মাইক্রোসফ্ট উভয়ই ব্যাপকভাবে এবং কার্যকরভাবে মেমরি সংস্থানগুলি সংরক্ষণ করতে মেমরি কম্প্রেশন ব্যবহার করে (এটিও মেমরি ওভারকমিট প্রযুক্তির বাস্তবায়নের মধ্যে একটি)।VMWare ESXi মেমরি ওভার কমিটমেন্ট (ভার্চুয়াল মেমরি বেলুনিং) vmmemctl.sys দ্বারা প্রয়োগ করা হয় ড্রাইভার (ভিএমওয়্যার টুলস-এ অন্তর্ভুক্ত), যা প্রয়োজনে এটিতে একটি জাল প্রক্রিয়া (যেমন একটি বেলুন ফোলা) তৈরি করে শারীরিক স্মৃতি ক্যাপচার করতে পারে। এইভাবে, মেমরির দখলকৃত পরিমাণ গেস্ট ওএস-এ অন্যান্য অ্যাপ্লিকেশনের জন্য অনুপলব্ধ হয়ে যায় এবং হাইপারভাইজার অন্যান্য VM-এর মধ্যে বিনামূল্যে মেমরি বিতরণ করতে পারে। হাইপার-ভি ডায়নামিক মেমরিতে, একটি dmvsc.sys ইন্টিগ্রেশন সার্ভিস থেকে ড্রাইভার (ডাইনামিক মেমরি ভিএসসি কম্পোনেন্ট) ব্যবহার করা হয়। মেমরি ওভার কমিটমেন্ট সেটিংস হাইপারভাইজার অ্যাডমিনিস্ট্রেটর দ্বারা পরিচালিত হয়।
গেস্ট অপারেটিং সিস্টেম যা দেখে তার চেয়ে কম শারীরিক মেমরি উপলব্ধ রয়েছে তা গেস্ট ভিএম থেকে আপনি কীভাবে সনাক্ত করতে পারেন?
আসুন বিবেচনা করা যাক গেস্ট উইন্ডোজ ওএস-এ বেলুন ড্রাইভার আছে কিনা এবং এর আকার কী তা কীভাবে সনাক্ত করা যায়। সুতরাং, আসুন এই উদাহরণটি বিশ্লেষণ করি।
8 GB মেমরি একটি VM চলমান গেস্ট Windows Server 2012 R2 এ বরাদ্দ করা হয়েছে৷ টাস্ক ম্যানেজার দেখায় যে 93% মেমরি ব্যবহৃত হয়েছে (7.4 GB মেমরি দখল করা হয়েছে)। যাইহোক, যদি আপনি সমস্ত চলমান প্রক্রিয়াগুলির দ্বারা ব্যবহৃত মেমরির পরিমাণ যোগ করেন, তাহলে আপনি একটি অপ্রত্যাশিত উপসংহারে আসতে পারেন যে প্রকৃতপক্ষে শুধুমাত্র 2.5 GB মেমরি ব্যবহৃত হয়। বাকি ৫ জিবি কোথায়? টাস্ক ম্যানেজার বা রিসোর্স মনিটর কেউই এই প্রশ্নের উত্তর দিতে সক্ষম নয়।
মেমরির সাথে কী ঘটছে তা বোঝার জন্য, আপনাকে RamMap ব্যবহার করতে হবে মার্ক রুসিনোভিচের টুল (আগের ক্ষেত্রে, আমি দেখিয়েছি কিভাবে উইন্ডোজ সার্ভারে মেটাফাইলের মাধ্যমে উচ্চ মেমরি ব্যবহারের সমস্যা নির্ণয় করতে এই টুলটি ব্যবহার করতে হয়)। মাইক্রোসফ্ট ওয়েবসাইট (https://technet.microsoft.com/en-us/library/ff700229.aspx) থেকে টুলটি ডাউনলোড করুন এবং প্রশাসকের বিশেষাধিকারের সাথে এটি চালান। এর পরে গণনা ব্যবহার করুন-এ ট্যাবে আপনি দেখতে পাচ্ছেন যে বেশিরভাগ মেমরি (5.4 GB) ড্রাইভার লকড দ্বারা ব্যবহৃত হয় বস্তু।
এটি সেই মেমরি যা হাইপারভাইজার গেস্ট ওএস-এ বেলুন ড্রাইভার ব্যবহার করে অন্যান্য ভার্চুয়াল মেশিনের মধ্যে দখল করেছে এবং বিতরণ করেছে। এর মানে হল হাইপারভাইজার হোস্টের যথেষ্ট মেমরি নেই বা হাইপারভাইজার অ্যাডমিনিস্ট্রেটর এই VM-এর জন্য মেমরি সীমা নীতিগুলি ব্যবহার করে৷
হাইপার-ভি-তে বর্তমান VM মেমরির পরিসংখ্যান পারফরম্যান্স মনিটরে পৃথক কর্মক্ষমতা কাউন্টার দ্বারা দেখানো হতে পারে:
- হাইপার-ভি ডায়নামিক মেমরি –> গেস্ট ভিজিবল মেমরি
- হাইপার-ভি ডায়নামিক মেমরি –> ফিজিক্যাল মেমরি
এই আচরণটি নিষ্ক্রিয় করতে, হাইপারভাইজার প্রশাসককে অবশ্যই ডাইনামিক মেমরি সক্ষম করুন নিষ্ক্রিয় করতে হবে ভিএম-এর হাইপার-ভি সেটিংসে বিকল্প (বা ন্যূনতম সংরক্ষণের মান বাড়ান)।
যদি VMWare ESXi হোস্ট ব্যবহার করা হয়, তাহলে আপনি রিসোর্স সেটিংস-এ এই ভার্চুয়াল মেশিনের জন্য আরও মেমরি সংরক্ষণ করতে পারেন অথবা সমস্ত মেমরি রিজার্ভ করুন – সমস্ত গেস্ট মেমরি রিজার্ভ করুন (সমস্ত লক)।