ওএসে স্মৃতি বেলুনিং


13

কিছু হাইপারভাইসর মেমোরির ব্যবহারটি এমন একটি পদ্ধতি ব্যবহার করে অনুকূল করে তোলে যেটিকে বেলুনিং বলা হয় (কমপক্ষে কেভিএম এটি বলে)
এটি একটি কাঁটাচামচ কল বিপরীত সাজানোর।

প্রক্রিয়াগুলির জন্য কোনও ওএস স্তরে কার্যকর করা কি সম্ভব (একই সাইটটিতে একাধিক ট্যাব সহ ক্রোমিয়ামের সাথে ব্রাউজ করার সময় আমি মূলত মেমরির সদৃশ হওয়ার কথা ভাবছিলাম), এটি ইতিমধ্যে বাস্তবায়ন হয়েছে কি?

উত্তর:


14

আসলে, আপনি যা বর্ণনা করেছেন তা বেলুনিং এবং 'একই পৃষ্ঠা-মার্জিং'কে বিভ্রান্ত করে। পার্থক্যটি সুস্পষ্ট করার জন্য আমি দু'এর বিস্তারিত জানার চেষ্টা করব।

স্মৃতি বেলুনিং

অতিথি ভার্চুয়াল মেশিনে বরাদ্দকৃত কিছু মেমোরি অন্য অতিথি বা হোস্ট নিজেই (ক্যাশে, ইত্যাদি) ব্যবহারযোগ্য । এটি নিম্নলিখিত উপায়ে সম্পন্ন হয়েছে:

অতিথির কার্নেলটি একটি ড্রাইভারের সাথে ইনজেকশন করা হয়, যা অতিথির স্মৃতি ব্যবহারের উপর নজর রাখে এবং কিছু অব্যবহৃত মেমরি 'চুরি করে' (অতিথির স্মৃতি স্থানে এটি নিজের জন্য বরাদ্দ করে, যাতে এই অতিথির কোনও কিছুই সেই ব্যাপ্তিটিকে স্পর্শ করতে পারে না তা নিশ্চিত করে)।

তারপরে এটি হোস্ট কার্নেলকে অবহিত করে, এটি প্রকৃতপক্ষে এই মেমরি পৃষ্ঠাগুলিটিকে মূল থেকে সরিয়ে ফেলতে পারে, যে তারা অতিথির জন্য ব্যবহৃত হবে না (যতক্ষণ না অতিথির কিছু মেমরির চাপ অনুভব হয়, যেদিকে বেলুনটি বিচ্ছিন্ন হয়ে যাবে এবং ব্যবহার করবে) এই আবার ব্যাপ্তি)।

শেষ পর্যন্ত, কার্নেল অন্য একই অতিথিকে ঠিক একই মেমোরি বরাদ্দ করতে পারে এবং অতিথিরা অনেক ফ্রি মেমরি নিয়ে চলমান থাকলে পুরো মেমরির ব্যবহারকে আরও কার্যকর করতে পারে।

একই পৃষ্ঠা মার্জ করা

এই কৌশলটি অভিন্ন মেমরি পৃষ্ঠাগুলি সনাক্ত করে, যে কোনও কারণে ইতিমধ্যে অনুলিপি-সহ লিখিতভাবে 'কোয়াড-পঠনযোগ্য কেবল' চিহ্নিত করা হয়নি এবং সেগুলিকে চিহ্নিত করে।

এখন, ওএস স্তরে, এই ধরণের কৌশলগুলির জন্য সীমিত প্রয়োজন। কেবলমাত্র যথেষ্ট পরিমাণে, যখন আপনার অভিন্ন মেমরি পৃষ্ঠাগুলি থাকে, তারা ইতিমধ্যে কেবল পঠনযোগ্য হয় (কখনও কখনও এমনকি কো ছাড়াও) কারণ এটি বেশিরভাগ অ্যাপ্লিকেশন কোড, লাইব্রেরি ইত্যাদি etc. এগুলি মেমরি ম্যাপের মাধ্যমে স্থানীয়ভাবে খোলা থাকে এবং সুতরাং কার্নেলটি রাখতে পারে মূলত তাদের কেবল একটি অনুলিপি (যদি কোনও হয় তবে এটি সম্পূর্ণরূপে এটি পৃষ্ঠাও বের করে দিতে পারে এবং এটি প্রয়োজনীয় হিসাবে প্রাথমিক স্টোর থেকে পেজ করার অনুমতি দেয়)।

ভার্চুয়ালাইজড ওএস স্তরে একই নীতিটি প্রতিটি অতিথি সাবসিস্টেমের মধ্যে সঠিকভাবে প্রয়োগ করা হয়। তবে, হোস্টের কার্নেল, কোনও ধারণা নেই যদি অতিথিদের মধ্যে দু'জনই একই কোডটি চালাচ্ছেন এবং এভাবে একই মেমরিটি ভাগ করছেন - অতিথিরা এটি সমন্বয় করতে যোগাযোগ করেন না।

কোনটি কেন এটা মাঝে মাঝে অভিন্ন মেমরির পৃষ্ঠাগুলির জন্য সম্পূর্ণ সিস্টেম স্ক্যান করতে পারে হয় - অধিকাংশ সময় তারা অভিন্ন হতে হবে জুড়ে , গেস্ট অপারেটিং সিস্টেমের এর না প্রতিটি এক মধ্যে - অতিথি কার্নেল একটি শালীন মেমরির এটা পরিসীমা মধ্যে ঝরঝরে পালন কাজ করে তোলে। সুতরাং, সাধারণ ভিএম পরিবেশে, যেখানে একটি হোস্ট কার্নেল 50+ অতিথিকে পরিচালনা করে, মেমরির সঞ্চয়টি যথেষ্ট পরিমাণে হতে পারে।

দুজনে একবারে

বেলুনিং এবং একই পৃষ্ঠা-সংহতকরণ খুব ভালভাবে সহ-অস্তিত্ব রাখতে পারে, অভিন্ন সিস্টেমের জন্য বেশ যথেষ্ট মেমরির ওভারকমিট অর্জন করে।


আপনার প্রশ্নের উত্তর দিতে - একই-পৃষ্ঠা-সংহতকরণ এবং কখনও কখনও কোনও ওএস স্তরে সক্ষম করা যায় is এটি পৃষ্ঠা ভাগ করে নেওয়া যা ব্যাখ্যা করা হয়েছে তা করতে হবে, এবং একইভাবে একই ব্যাকিং ফাইল না করে অভিন্ন হয়ে উঠতে পারে।

আপনার ক্রোমিয়াম উদাহরণে - প্রক্রিয়া বাইনারিগুলি ইতিমধ্যে কেবল পঠন-পঠন শুরু ম্যাপের মাধ্যমে নকল করা হয় - তারা ঠিক একই মেমরির স্থান ভাগ করে দেয়। পৃষ্ঠা ক্যাশে (ট্যাবগুলির বিষয়বস্তু) সাধারণত ডিস্ক ক্যাশে পরিচালিত হওয়ার কারণে প্রক্রিয়াগুলির মধ্যে (কেবলমাত্র পঠনযোগ্য অনুলিপি-রচনার) মধ্যে ভাগ করা হয় - একই অন-ডিস্ক ফাইলটি ভিএম-তে বিভিন্ন প্রক্রিয়ার মধ্যে একযোগে খোলা যেতে পারে due -পটিমাল ইন্দ্রিয়।

সুবিধাটি বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিনগুলির ভাগ করা রাষ্ট্রের সাথে সর্বাধিক স্পষ্ট হবে - তবে নিশ্চিত যে পুরো মেমরি পৃষ্ঠাটি অভিন্ন কিনা তা নিশ্চিত করে ঠিক সেগুলি একই মেমরি লেআউটে বরাদ্দ করা হয়েছে কিনা তা নিশ্চিত not

এটি মোবাইল সিস্টেমে আলাদা। উদাহরণস্বরূপ, অ্যান্ড্রয়েড বিভিন্ন অ্যাপ্লিকেশনগুলির মধ্যে অভিন্ন কোড নকল করতে ব্যাপকভাবে কেএসএম নিয়োগ করে।

উভয় ক্ষেত্রেই, আপনি এটি লিনাক্সে (কার্নেল সেমেজ পেজ মার্জিং) নিজেকে সক্ষম করতে পারেন। ড্রাইভার বিভিন্ন পরিসংখ্যান রফতানি করে যে, এই উত্তরটি পড়ার পরে, আপনাকে ব্যাখ্যা করতে সক্ষম হওয়া উচিত এবং এটি আপনার উদ্দেশ্যটির পক্ষে একটি ভাল মিল কিনা তা নিজের সিদ্ধান্ত নিতে হবে।

https://www.kernel.org/doc/Documentation/vm/ksm.txt


3
হাইপাইভাইজার (এবং এর বয়স) এর উপর নির্ভর করে একই পৃষ্ঠাগুলি একত্রীকরণকে ট্রান্সেন্ডেন্ট মেমরি হিসাবেও উল্লেখ করা হয়।
টিম পোস্ট

আপনাকে ধন্যবাদ, আমি দেখতে পেয়েছি যে কেএসএম এর সচেতন হওয়ার জন্য অ্যাপ্লিকেশনটির প্রয়োজন, এবং একটি (দ্রুত) অনুসন্ধান থেকে ক্রোমিয়াম এখন পর্যন্ত এটি সমর্থন করে না। আমি জানি যে বাইনারিগুলি অনুলিপি করা হয়েছে, তবে আমি বেশিরভাগই জেআইটি আউটপুট এবং কাঁচা স্ক্রিপ্টগুলি উল্লেখ করছি যা আমার র‌্যামকে ভারী চাপ দিয়েছে ...

ক্রোমিয়ামের কাঁচা স্ক্রিপ্টগুলিও নকল করা হয় - এগুলি অন্যান্য সমস্ত ওয়েব অবজেক্টের মতোই ডিস্ক ক্যাশে অবতরণ করে এবং ডিস্ক ক্যাশে ম্যাপ করা হয়, পড়ে না।
qdot

কাঁচা স্ক্রিপ্টগুলি ম্যাপ করা হয়, তবে সাধারণ স্ক্রিপ্টগুলিও (যেমন jQuery এবং Angular.js) ক্যাশে অনুলিপি করা হয় এবং বিভিন্ন সাইটের সার্ভারে সিডিএন এবং স্ক্রিপ্ট ফাইলগুলির যথাযথ প্রতিলিপি ব্যবহার করার কারণে তারা একে অপরের সাথে মেলে না।

এটি সম্ভবত চ্যাটে শেষ হওয়া উচিত, তবে আমি লিনাক্সের কেএসএম থেকে আপনার পরিসংখ্যানগুলি দেখতে পছন্দ করব।
qdot
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.