উত্তর:
চাহিদা সাপেক্ষে. প্রকৃতপক্ষে, লিনাক্স অলস অবস্থায় ধীরে ধীরে শারীরিক মেমরিটি অদলবদলে স্থানান্তর করবে (দেখুন: "অদলবদল")।
নিয়মিত অপারেশনের সময় অদলবদল থেকে ডেটা চাহিদা অনুসারে মেমরিতে লোড করা হয়, যেমনটি অন্য জবাব দেয়, তবে এরপরে আর একটি ঘটনা ঘটে: এটি যখন স্বাপের স্থানটি অক্ষম করা হয়, তবে পুরো স্বাপের সামগ্রী লোড করার জন্য পর্যাপ্ত শারীরিক মেমরি থাকে physical
শুধু কর:
swapoff -a
… এবং আপনার সমস্ত অদলবদল মেমরিতে 'ফিরে আসবে'। পার্শ্ব প্রতিক্রিয়া হ'ল ডিস্ক বাফার / ক্যাশে ফ্লাশ হয়ে যেতে পারে।
কখনও কখনও এটি করা বাঞ্ছনীয় হতে পারে swapoff -a ; swapon -a
, উদাহরণস্বরূপ কিছু বাগি মেমরি-ফাঁস প্রক্রিয়া পরে ক্র্যাশ হওয়ার আগে আরও গুরুত্বপূর্ণ প্রক্রিয়া সরিয়ে ফেলা হয়েছে - সিস্টেমটিতে চলমান কোনও প্রক্রিয়া স্মৃতিতে লোড হয়েছে কিনা তা নিশ্চিত করার জন্য এবং অদলবদলের অপেক্ষায় থাকবে না কয়েক মিনিট.
swapoff
ব্যর্থ হবে না, তবে সিস্টেমটি খুব শীঘ্রই মেমরির বাইরে চলে যাবে swapoff
এবং OOM এলোমেলো প্রক্রিয়াটি শেষ করে দেবে (সবচেয়ে খারাপ ক্ষেত্রে শেলটি কল করতে swapon
বা swapon
কমান্ড দেওয়ার ক্ষেত্রে)। অনুশীলনে এটি খুব অসম্ভব - প্রচুর মেমরির আগে ক্যাশে swapoff
বলা হয় তাই এটি উভয় কমান্ড চালানোর জন্য যথেষ্ট পরিমাণে র্যামের হওয়া উচিত।
যেমন অন্যরা উল্লেখ করেছে, পৃষ্ঠাগুলি কেবল প্রয়োজন হলে (চাহিদা অনুযায়ী) র্যামে অনুলিপি করা হবে র্যাম গ্রহণের পরিবর্তে যা ক্যাশে / বাফারদের জন্য আরও সহজ থাকতে পারে।
পৃষ্ঠাগুলি র্যামে ফিরে অনুলিপি করা হয়েছে, সরানো হয়নি তা গুরুত্বপূর্ণ এবং আপনি যদি তা অবগত না হন তবে বিভ্রান্তির কারণ হতে পারে। পৃষ্ঠটি অদলবদল থেকে বিচ্ছিন্ন করা হবে না যতক্ষণ না এটি আর প্রয়োজন হয় না (উদাহরণস্বরূপ পৃষ্ঠাটি সম্পূর্ণরূপে বিলোপযুক্ত হয়), র্যামে পরিবর্তন করা হয় (সুতরাং সোয়াপ-এ থাকা অনুলিপিটি আর সঠিক নয়), বা অদলবদল কম চলছে (এবং চালু -ডিশ্ক ব্লকগুলি অন্য কয়েকটি পৃষ্ঠা সরিয়ে আনা দরকার)। এইভাবে যদি পৃষ্ঠাটি আবার অদলবদল করা দরকার ভবিষ্যতে কোনও ডিস্ক রাইটিংয়ের প্রয়োজন নেই কারণ কার্নেলটি জানে যে ডিস্কে ইতিমধ্যে ভাল কপি রয়েছে - এটি যখন "র্যাঙ্কিং" হ্রাস করতে পারে যখন উপলব্ধ র্যামের সমালোচনামূলকভাবে কম হয় তবে অদলবদলও স্থান নয় ঘনবসতিপূর্ণ।
আপনি দেখতে পাচ্ছেন যে বর্তমানে কতগুলি পৃষ্ঠাগুলি র্যাম এবং অদলবদল উভয় থেকেই রয়েছে cat /proc/meminfo
- SwapCached
লাইনটি হ'ল পৃষ্ঠাগুলিতে থাকা ডেটা পরিমাণ যা বর্তমানে র্যাম এবং ডিস্ক উভয় ক্ষেত্রে রয়েছে। আপনি যদি মনে করেন যে আপনার বর্তমান অদলবদু এটি আপনার প্রত্যাশার চেয়ে বেশি ব্যবহার করে, স্ব্যাপচ্যাশ মানটি পরীক্ষা করুন কারণ এটি তাত্পর্যটিকে ভালভাবে ব্যাখ্যা করতে পারে।
এটি সাধারণত আপনি যে হার্ডওয়্যারটি ব্যবহার করছেন তাতে আবদ্ধ। বেশিরভাগ হার্ডওয়্যারে (ইন্টেল সহ) এমএমইউ পুরো প্রক্রিয়াটি নিয়ন্ত্রণ করে।
যখন কোনও প্রোগ্রাম মেমরি বরাদ্দ করে, এটি এটি এমএমইউতে অনুরোধ করবে এবং একটি ভার্চুয়াল ঠিকানা ফিরে পাবে। পরিবর্তে, এমএমইউ সেই পৃষ্ঠাটি বিশ্বব্যাপী ঠিকানা স্থানের মানচিত্রে "ব্যবহৃত হিসাবে" হিসাবে নিবন্ধিত করবে।
প্রোগ্রামটি প্রকৃতপক্ষে সেই মেমরি স্পেসে অ্যাক্সেস করলে এমএমইউ পৃষ্ঠাটির ঠিকানা মানচিত্রে সন্ধান করবে। যদি সেই পৃষ্ঠাটি "লাইভ" স্মৃতিতে থাকে তবে এটি ওএসকে একটি "লাইভ" পয়েন্টারটি প্রেরণ করবে যা প্রোগ্রামের পক্ষে মেমরি পড়ার / লেখার পরিচালনা করবে। যদি মেমরিটি বর্তমানে বরাদ্দ না করা হয়, তবে এটি একটি পৃষ্ঠা ত্রুটি ট্রিগার করবে। এই প্রসেসরের ব্যতিক্রমটি তখন ওএসের দ্বারা ধরা পড়ে যা তখন অদলবদল ফাইলের মধ্যে ডেটা কোথায় থাকে তা নির্ধারণের জন্য দায়বদ্ধ হয়, এটি শারীরিক স্মৃতিতে লোড করুন এবং পৃষ্ঠাটি এমএমইউতে ফিরিয়ে দিন যাতে প্রাথমিক প্রক্রিয়াটি চালিয়ে যেতে পারে।
এর অর্থ হ'ল, মেমোরি পৃষ্ঠাটি অ্যাক্সেস না করা হলে, অদলবদল হয়ে গেলে এটি কখনই "লাইভ" স্মৃতিতে ফিরে আসবে না। এ কারণেই সাধারণত একটি ওএস এপিআই থাকে যা প্রোগ্রামগুলিকে নির্দিষ্ট করার অনুমতি দেয় যে কোনও নির্দিষ্ট মেমরি ব্লকটি ডিস্কে অদলবদল করা উচিত নয় এবং মেমরিতে রাখা উচিত (আমি লিনাক্স সম্পর্কে জানি না, তবে উইন্ডোজে এটি ভার্চুয়াললক ফাংশন) ।
mlock(2)
linux.die.net/man/2/mlock