কখন অদলবদল শারীরিক স্মৃতিতে ফিরে যায়?


8

লিনাক্সে কখন অদলবদলকে ফিজিক্যাল মেমোরিতে ফিরিয়ে দেওয়া হয়? এটি কি কেবল চাহিদা অনুসারে? যখন এটি প্রয়োজন? বা যখন কম্পিউটার বেশি লোড না রাখে তখন অদলবদলটি ধীরে ধীরে শারীরিক স্মৃতিতে স্থানান্তরিত হয়?

উত্তর:


7

চাহিদা সাপেক্ষে. প্রকৃতপক্ষে, লিনাক্স অলস অবস্থায় ধীরে ধীরে শারীরিক মেমরিটি অদলবদলে স্থানান্তর করবে (দেখুন: "অদলবদল")।


ধন্যবাদ। একটি সংক্ষিপ্ত একটি সংক্ষিপ্ত উত্তর। আমি এটি পছন্দ করি (যদিও তাদের প্রত্যুত্তরের প্রত্যেকটির প্রচেষ্টাটির আমি প্রশংসা করি)!
Ztyx

এই উত্তরটি ভুল। প্রশ্নটি যখন মেমরিটি পেজড থাকে, পেজ আউট হয় না। এটি বিপরীত। পৃষ্ঠার ত্রুটিতে কার্নেল পৃষ্ঠাটি ডিস্ক / অদলবদল থেকে পুনরায় লোড করবে। তাই বেশিরভাগ চাহিদা অনুসারে। পৃষ্ঠার ত্রুটিগুলি ট্রিগার করতে আপনি কোনও প্রক্রিয়াটির সমস্ত ভার্চুয়াল মেমরি অ্যাক্সেস করতে পারেন। ফলস্বরূপ পৃষ্ঠাগুলি র‌্যামে ফিরে অনুলিপি করা হবে।
ব্যবহারকারী 228505

7

নিয়মিত অপারেশনের সময় অদলবদল থেকে ডেটা চাহিদা অনুসারে মেমরিতে লোড করা হয়, যেমনটি অন্য জবাব দেয়, তবে এরপরে আর একটি ঘটনা ঘটে: এটি যখন স্বাপের স্থানটি অক্ষম করা হয়, তবে পুরো স্বাপের সামগ্রী লোড করার জন্য পর্যাপ্ত শারীরিক মেমরি থাকে physical

শুধু কর:

swapoff -a

… এবং আপনার সমস্ত অদলবদল মেমরিতে 'ফিরে আসবে'। পার্শ্ব প্রতিক্রিয়া হ'ল ডিস্ক বাফার / ক্যাশে ফ্লাশ হয়ে যেতে পারে।

কখনও কখনও এটি করা বাঞ্ছনীয় হতে পারে swapoff -a ; swapon -a, উদাহরণস্বরূপ কিছু বাগি মেমরি-ফাঁস প্রক্রিয়া পরে ক্র্যাশ হওয়ার আগে আরও গুরুত্বপূর্ণ প্রক্রিয়া সরিয়ে ফেলা হয়েছে - সিস্টেমটিতে চলমান কোনও প্রক্রিয়া স্মৃতিতে লোড হয়েছে কিনা তা নিশ্চিত করার জন্য এবং অদলবদলের অপেক্ষায় থাকবে না কয়েক মিনিট.


ওহ, আপনি প্রতিদিন কিছু ভাল শিখেন! বিটিডব্লু, wapসপাওফ -আ ´ ব্যর্থ কি যথেষ্ট শারীরিক স্মৃতি নেই? অদলবদল কল করার মধ্যে কি কোনও ঝুঁকি রয়েছে?
Ztyx

পর্যাপ্ত শারীরিক স্মৃতি না থাকলে এটি ব্যর্থ হবে। এটি এখনও একটি ঝুঁকি swapoffব্যর্থ হবে না, তবে সিস্টেমটি খুব শীঘ্রই মেমরির বাইরে চলে যাবে swapoffএবং OOM এলোমেলো প্রক্রিয়াটি শেষ করে দেবে (সবচেয়ে খারাপ ক্ষেত্রে শেলটি কল করতে swaponবা swaponকমান্ড দেওয়ার ক্ষেত্রে)। অনুশীলনে এটি খুব অসম্ভব - প্রচুর মেমরির আগে ক্যাশে swapoffবলা হয় তাই এটি উভয় কমান্ড চালানোর জন্য যথেষ্ট পরিমাণে র‍্যামের হওয়া উচিত।
Jacek Konieczny

7

যেমন অন্যরা উল্লেখ করেছে, পৃষ্ঠাগুলি কেবল প্রয়োজন হলে (চাহিদা অনুযায়ী) র‌্যামে অনুলিপি করা হবে র‌্যাম গ্রহণের পরিবর্তে যা ক্যাশে / বাফারদের জন্য আরও সহজ থাকতে পারে।

পৃষ্ঠাগুলি র‍্যামে ফিরে অনুলিপি করা হয়েছে, সরানো হয়নি তা গুরুত্বপূর্ণ এবং আপনি যদি তা অবগত না হন তবে বিভ্রান্তির কারণ হতে পারে। পৃষ্ঠটি অদলবদল থেকে বিচ্ছিন্ন করা হবে না যতক্ষণ না এটি আর প্রয়োজন হয় না (উদাহরণস্বরূপ পৃষ্ঠাটি সম্পূর্ণরূপে বিলোপযুক্ত হয়), র‌্যামে পরিবর্তন করা হয় (সুতরাং সোয়াপ-এ থাকা অনুলিপিটি আর সঠিক নয়), বা অদলবদল কম চলছে (এবং চালু -ডিশ্ক ব্লকগুলি অন্য কয়েকটি পৃষ্ঠা সরিয়ে আনা দরকার)। এইভাবে যদি পৃষ্ঠাটি আবার অদলবদল করা দরকার ভবিষ্যতে কোনও ডিস্ক রাইটিংয়ের প্রয়োজন নেই কারণ কার্নেলটি জানে যে ডিস্কে ইতিমধ্যে ভাল কপি রয়েছে - এটি যখন "র‌্যাঙ্কিং" হ্রাস করতে পারে যখন উপলব্ধ র‌্যামের সমালোচনামূলকভাবে কম হয় তবে অদলবদলও স্থান নয় ঘনবসতিপূর্ণ।

আপনি দেখতে পাচ্ছেন যে বর্তমানে কতগুলি পৃষ্ঠাগুলি র‌্যাম এবং অদলবদল উভয় থেকেই রয়েছে cat /proc/meminfo- SwapCachedলাইনটি হ'ল পৃষ্ঠাগুলিতে থাকা ডেটা পরিমাণ যা বর্তমানে র‌্যাম এবং ডিস্ক উভয় ক্ষেত্রে রয়েছে। আপনি যদি মনে করেন যে আপনার বর্তমান অদলবদু এটি আপনার প্রত্যাশার চেয়ে বেশি ব্যবহার করে, স্ব্যাপচ্যাশ মানটি পরীক্ষা করুন কারণ এটি তাত্পর্যটিকে ভালভাবে ব্যাখ্যা করতে পারে।


এর আগেও এর আগে একই বিষয় নিয়ে আলোচনা হয়েছে। তবে, এই নির্দিষ্ট প্রশ্ন নয়। এছাড়াও সার্ভারফল্ট / প্রশ্ন / 100448/… দেখুন যা স্ব্যাপক্যাশযুক্ত।
Ztyx

আমি এই উত্তরটি লেখার কথা মনে
রাখিনা

0

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

যখন কোনও প্রোগ্রাম মেমরি বরাদ্দ করে, এটি এটি এমএমইউতে অনুরোধ করবে এবং একটি ভার্চুয়াল ঠিকানা ফিরে পাবে। পরিবর্তে, এমএমইউ সেই পৃষ্ঠাটি বিশ্বব্যাপী ঠিকানা স্থানের মানচিত্রে "ব্যবহৃত হিসাবে" হিসাবে নিবন্ধিত করবে।

প্রোগ্রামটি প্রকৃতপক্ষে সেই মেমরি স্পেসে অ্যাক্সেস করলে এমএমইউ পৃষ্ঠাটির ঠিকানা মানচিত্রে সন্ধান করবে। যদি সেই পৃষ্ঠাটি "লাইভ" স্মৃতিতে থাকে তবে এটি ওএসকে একটি "লাইভ" পয়েন্টারটি প্রেরণ করবে যা প্রোগ্রামের পক্ষে মেমরি পড়ার / লেখার পরিচালনা করবে। যদি মেমরিটি বর্তমানে বরাদ্দ না করা হয়, তবে এটি একটি পৃষ্ঠা ত্রুটি ট্রিগার করবে। এই প্রসেসরের ব্যতিক্রমটি তখন ওএসের দ্বারা ধরা পড়ে যা তখন অদলবদল ফাইলের মধ্যে ডেটা কোথায় থাকে তা নির্ধারণের জন্য দায়বদ্ধ হয়, এটি শারীরিক স্মৃতিতে লোড করুন এবং পৃষ্ঠাটি এমএমইউতে ফিরিয়ে দিন যাতে প্রাথমিক প্রক্রিয়াটি চালিয়ে যেতে পারে।

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


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