আসলে, আপনি যা বর্ণনা করেছেন তা বেলুনিং এবং 'একই পৃষ্ঠা-মার্জিং'কে বিভ্রান্ত করে। পার্থক্যটি সুস্পষ্ট করার জন্য আমি দু'এর বিস্তারিত জানার চেষ্টা করব।
স্মৃতি বেলুনিং
অতিথি ভার্চুয়াল মেশিনে বরাদ্দকৃত কিছু মেমোরি অন্য অতিথি বা হোস্ট নিজেই (ক্যাশে, ইত্যাদি) ব্যবহারযোগ্য । এটি নিম্নলিখিত উপায়ে সম্পন্ন হয়েছে:
অতিথির কার্নেলটি একটি ড্রাইভারের সাথে ইনজেকশন করা হয়, যা অতিথির স্মৃতি ব্যবহারের উপর নজর রাখে এবং কিছু অব্যবহৃত মেমরি 'চুরি করে' (অতিথির স্মৃতি স্থানে এটি নিজের জন্য বরাদ্দ করে, যাতে এই অতিথির কোনও কিছুই সেই ব্যাপ্তিটিকে স্পর্শ করতে পারে না তা নিশ্চিত করে)।
তারপরে এটি হোস্ট কার্নেলকে অবহিত করে, এটি প্রকৃতপক্ষে এই মেমরি পৃষ্ঠাগুলিটিকে মূল থেকে সরিয়ে ফেলতে পারে, যে তারা অতিথির জন্য ব্যবহৃত হবে না (যতক্ষণ না অতিথির কিছু মেমরির চাপ অনুভব হয়, যেদিকে বেলুনটি বিচ্ছিন্ন হয়ে যাবে এবং ব্যবহার করবে) এই আবার ব্যাপ্তি)।
শেষ পর্যন্ত, কার্নেল অন্য একই অতিথিকে ঠিক একই মেমোরি বরাদ্দ করতে পারে এবং অতিথিরা অনেক ফ্রি মেমরি নিয়ে চলমান থাকলে পুরো মেমরির ব্যবহারকে আরও কার্যকর করতে পারে।
একই পৃষ্ঠা মার্জ করা
এই কৌশলটি অভিন্ন মেমরি পৃষ্ঠাগুলি সনাক্ত করে, যে কোনও কারণে ইতিমধ্যে অনুলিপি-সহ লিখিতভাবে 'কোয়াড-পঠনযোগ্য কেবল' চিহ্নিত করা হয়নি এবং সেগুলিকে চিহ্নিত করে।
এখন, ওএস স্তরে, এই ধরণের কৌশলগুলির জন্য সীমিত প্রয়োজন। কেবলমাত্র যথেষ্ট পরিমাণে, যখন আপনার অভিন্ন মেমরি পৃষ্ঠাগুলি থাকে, তারা ইতিমধ্যে কেবল পঠনযোগ্য হয় (কখনও কখনও এমনকি কো ছাড়াও) কারণ এটি বেশিরভাগ অ্যাপ্লিকেশন কোড, লাইব্রেরি ইত্যাদি etc. এগুলি মেমরি ম্যাপের মাধ্যমে স্থানীয়ভাবে খোলা থাকে এবং সুতরাং কার্নেলটি রাখতে পারে মূলত তাদের কেবল একটি অনুলিপি (যদি কোনও হয় তবে এটি সম্পূর্ণরূপে এটি পৃষ্ঠাও বের করে দিতে পারে এবং এটি প্রয়োজনীয় হিসাবে প্রাথমিক স্টোর থেকে পেজ করার অনুমতি দেয়)।
ভার্চুয়ালাইজড ওএস স্তরে একই নীতিটি প্রতিটি অতিথি সাবসিস্টেমের মধ্যে সঠিকভাবে প্রয়োগ করা হয়। তবে, হোস্টের কার্নেল, কোনও ধারণা নেই যদি অতিথিদের মধ্যে দু'জনই একই কোডটি চালাচ্ছেন এবং এভাবে একই মেমরিটি ভাগ করছেন - অতিথিরা এটি সমন্বয় করতে যোগাযোগ করেন না।
কোনটি কেন এটা মাঝে মাঝে অভিন্ন মেমরির পৃষ্ঠাগুলির জন্য সম্পূর্ণ সিস্টেম স্ক্যান করতে পারে হয় - অধিকাংশ সময় তারা অভিন্ন হতে হবে জুড়ে , গেস্ট অপারেটিং সিস্টেমের এর না প্রতিটি এক মধ্যে - অতিথি কার্নেল একটি শালীন মেমরির এটা পরিসীমা মধ্যে ঝরঝরে পালন কাজ করে তোলে। সুতরাং, সাধারণ ভিএম পরিবেশে, যেখানে একটি হোস্ট কার্নেল 50+ অতিথিকে পরিচালনা করে, মেমরির সঞ্চয়টি যথেষ্ট পরিমাণে হতে পারে।
দুজনে একবারে
বেলুনিং এবং একই পৃষ্ঠা-সংহতকরণ খুব ভালভাবে সহ-অস্তিত্ব রাখতে পারে, অভিন্ন সিস্টেমের জন্য বেশ যথেষ্ট মেমরির ওভারকমিট অর্জন করে।
আপনার প্রশ্নের উত্তর দিতে - একই-পৃষ্ঠা-সংহতকরণ এবং কখনও কখনও কোনও ওএস স্তরে সক্ষম করা যায় is এটি পৃষ্ঠা ভাগ করে নেওয়া যা ব্যাখ্যা করা হয়েছে তা করতে হবে, এবং একইভাবে একই ব্যাকিং ফাইল না করে অভিন্ন হয়ে উঠতে পারে।
আপনার ক্রোমিয়াম উদাহরণে - প্রক্রিয়া বাইনারিগুলি ইতিমধ্যে কেবল পঠন-পঠন শুরু ম্যাপের মাধ্যমে নকল করা হয় - তারা ঠিক একই মেমরির স্থান ভাগ করে দেয়। পৃষ্ঠা ক্যাশে (ট্যাবগুলির বিষয়বস্তু) সাধারণত ডিস্ক ক্যাশে পরিচালিত হওয়ার কারণে প্রক্রিয়াগুলির মধ্যে (কেবলমাত্র পঠনযোগ্য অনুলিপি-রচনার) মধ্যে ভাগ করা হয় - একই অন-ডিস্ক ফাইলটি ভিএম-তে বিভিন্ন প্রক্রিয়ার মধ্যে একযোগে খোলা যেতে পারে due -পটিমাল ইন্দ্রিয়।
সুবিধাটি বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিনগুলির ভাগ করা রাষ্ট্রের সাথে সর্বাধিক স্পষ্ট হবে - তবে নিশ্চিত যে পুরো মেমরি পৃষ্ঠাটি অভিন্ন কিনা তা নিশ্চিত করে ঠিক সেগুলি একই মেমরি লেআউটে বরাদ্দ করা হয়েছে কিনা তা নিশ্চিত not
এটি মোবাইল সিস্টেমে আলাদা। উদাহরণস্বরূপ, অ্যান্ড্রয়েড বিভিন্ন অ্যাপ্লিকেশনগুলির মধ্যে অভিন্ন কোড নকল করতে ব্যাপকভাবে কেএসএম নিয়োগ করে।
উভয় ক্ষেত্রেই, আপনি এটি লিনাক্সে (কার্নেল সেমেজ পেজ মার্জিং) নিজেকে সক্ষম করতে পারেন। ড্রাইভার বিভিন্ন পরিসংখ্যান রফতানি করে যে, এই উত্তরটি পড়ার পরে, আপনাকে ব্যাখ্যা করতে সক্ষম হওয়া উচিত এবং এটি আপনার উদ্দেশ্যটির পক্ষে একটি ভাল মিল কিনা তা নিজের সিদ্ধান্ত নিতে হবে।
https://www.kernel.org/doc/Documentation/vm/ksm.txt