আপনি যখন লিনাক্স ইনস্টল করেন, সেটআপ প্রসেস সম্ভবত লিনাক্সের পার্টিশনগুলোর পাশাপাশি হার্ড ডিস্কে একটি সওয়াপ পার্টিশন যোগ করবে। কিন্তু এই সওয়াপ পার্টিশনটি কী জন্য ব্যবহার করা হয় এবং কি এটি সত্যিই প্রয়োজনীয়?
সওয়াপ কী?
যখন একটি মাল্টিটাস্কিং অপারেটিং সিস্টেম ফিজিক্যাল মেমরি শেষ হয়ে যায়, তবে এটি নতুন প্রসেস শুরু করতে বা বিদ্যমান প্রসেসগুলোর অধিক মেমরি অ্যালোকেট করতে অক্ষম হয়। এই সমস্যাটি সমাধান করার জন্য, লোকাল স্টোরেজে (প্রায়শই হার্ড ড্রাইভ) একটি বিশেষ ব্লক স্পেস সাইডলাইন করা হয় যাতে এটি বর্তমানে চলছে না এমন প্রসেসের জন্য একটি অস্থায়ী হোল্ডিং এরিয়া হিসেবে কাজ করে। OS "সওয়াপ" করে নিষ্ক্রিয় প্রসেসকে মেমরির থেকে হার্ড ডিস্কে নিয়ে যায়। এটি নতুন কাজের জন্য মেমরি মুক্ত করে। যখন নিষ্ক্রিয় প্রসেসটি আবার সক্রিয় হয়, তবে এটি লোকাল স্টোরেজ থেকে মেমরিতে সওয়াপ ব্যাক হয়। এই প্রসিডিউরকে সওয়াপিং বলা হয়।
সওয়াপ স্পেস কি সত্যিই প্রয়োজনীয়?
সওয়াপ স্পেস কি টেকনিক্যালি প্রয়োজনীয়? না। লিনাক্স এর ছাড়া কাজ করতে পারে এবং কিছু পরিস্থিতিতে, যেমন এমবেডেড সমাধান, লিনাক্স সওয়াপ ছাড়াই চলতে পারে। যদি OS এমন পরিস্থিতিতে পড়ে যেখানে পর্যাপ্ত মেমরি নেই, তবে এটি প্যানিক করবে এবং বন্ধ হয়ে যাবে। যদি পর্যাপ্ত ফিজিক্যাল RAM থাকে, তবে মেশিন কোনো সমস্যা ছাড়াই চলবে।
সওয়াপ স্পেস কি প্র্যাক্টিক্যালি প্রয়োজনীয়? হ্যাঁ। যদিও সওয়াপিং কম্পিউটারকে স্লো করে (কারণ হার্ড ডিস্কে পড়া এবং লেখা RAM এক্সেস করার চেয়ে অনেক স্লো) এবং বোর্ডে যতটা সম্ভব ফিজিক্যাল মেমরি থাকা সওয়াপিং এড়াতে সেরা সমাধান, কিছু বৈধ পরিস্থিতি আছে যেখানে সওয়াপিং উপযোগী। উদাহরণস্বরূপ, সিস্টেম বুটের সময়, এমন প্রসেস থাকতে পারে যা চলে (তবু সিস্টেম মেমরি কনসিউম করে) কিন্তু তারপর খুব লম্বা সময় için কার্যকরভাবে স্লিপ করে। অথবা মেমরি যা অ্যালোকেট করা, লেখা, এবং তারপর আবার কখনো ব্যবহার করা হয় না। এই পরিস্থিতিতে, সওয়াপিং অ্যালগরিদম এই মেমরি হár্ড ডিস্কে মাইগ্রেট করা শুরু করবে এবং সুবিধামূলক সিস্টেম মেমরি মুক্ত করবে। এটি আসলে নিশ্চিত করে যে সর্বোচ্চ পরিমাণ RAM সবসময় উপলব্ধ থাকে এবং তাই পারফরম্যান্স বাড়ায়।
যে মেশিনগুলোর পর্যাপ্ত ফিজিক্যাল RAM নেই সকল কিছু মেমরিতে থাকতে, সেখানে সওয়াপ স্পেসের ব্যবহার অপরিহার্য!
সম্পূর্ণতার জন্য, এটি উল্লেখ করা উচিত যে লিনাক্সের একটি সাবসিস্টেমও আছে যাকে Out-Of-Memory Killer (OOM) বলা হয়, যা মেমরি শেষ হলে কার্নেল বন্ধ করার বদলে প্রসেস giếtা শুরু করে রিসোর্স মুক্ত করার জন্য। এর কার্যবলি কনফিগারযোগ্য।
আমি কতটুকু সওয়াপ স্পেস অ্যালোকেট করব?
এখানে কোনো निरপেক্ষ নিয়ম নেই এবং যেহেতু হার্ড ডিস্ক স্পেস সস্তা (প্রতি গিগাবাইটে ডলার) আপনার জন্য কম স্পেস অ্যালোকেট করার চেয়ে বেশি স্পেস অ্যালোকেট করা ভালো। রফি অফ থাম্ব হিসেবে, আপনার ফিজিক্যাল মেমরির দুই বা তিন গুণ সওয়াপ স্পেস থাকা উচিত।
সওয়াপ পার্টিশন বাড়ানো ছাড়াই সওয়াপ যোগ করা
বিদ্যমান সওয়াপ পার্টিশন পরিবর্তন না করে একটি সিস্টেমে সওয়াপ স্পেস যোগ করার দুটি উপায় আছে। একটি উপায় হল অন্য ড্রাইভে একটি সওয়াপ পার্টিশন ব্যবহার করা, অন্যটি হল একটি সওয়াপ ফাইল ব্যবহার করা।
অন্য একটি হার্ড ড্রাইভ ব্যবহার করতে, "Linux swap" (কোড 82) টাইপের একটি পার্টিশন তৈরি করুন এবং তারপর সওয়াপ স্পেস প্রস্তুত করার জন্য "mkswap" কমান্ড চালান:
mkswap /dev/sdb2
এখানে /dev/sdb2 হল আপনার তৈরি করা পার্টিশনের নাম। সওয়াপ স্পেস অবিলম্বে ব্যবহার করতে "swapon" কমান্ড ব্যবহার করুন:
swapon /dev/sdb2
বর্তমানে ব্যবহৃত সওয়াপ স্পেসের তালিকা পেতে "swapon -s" ব্যবহার করুন। সওয়াপ স্পেসটিকে সিস্টেমে स्थायीভাবে যোগ করতে, আপনাকে /etc/fstab ফাইলটি এডিট করতে হবে এবং এমন একটি লাইন যোগ করতে হবে:
/dev/sdb2 none swap sw 0 0
আপনার সিস্টেম যদি ডিস্ক নাম করার জন্য ইউনিক আইডেন্টিফায়ার ব্যবহার করে, তবে ডিভাইসের জন্য আইডি লিস্ট পেতে blkid কমান্ড ব্যবহার করুন। /etc/fstab-এ সওয়াপ স্পেস মাউন্ট করার লাইনটি তখন এমন দেখাবে:
UUID=036da155-1ea1-4392-b8d4-700f65aa1ead none swap sw 0 0
সওয়াপের জন্য একটি ফাইল ব্যবহার করতে, আপনি যে ফাইলসিস্টেমটি সওয়াপিং জন্য ব্যবহার করতে চান সেটিতে একটি বড় খালি ফাইল তৈরি করুন (dd ব্যবহার করে)। উদাহরণস্বরূপ, একটি 1GB ফাইল তৈরি করতে, লিখুন:
dd if=/dev/zero of=/store/swapfile bs=1024 count=1048576
এখানে /store/swapfile হল কাঙ্ক্ষিত ফাইলসিস্টেমে সওয়াপ ফাইলের পাথ।
অতিরিক্ত সওয়াপ পার্টিশনের মতো, ফাইলটিকে এখন mkswap দিয়ে প্রস্তুত করতে হবে এবং swapon দিয়ে ব্যবহার করতে হবে। এটিকে /etc/fstab ফাইলেও যোগ করতে হবে। প্রসিডিউরটি উপরের মতোই, কিন্তু আপনাকে সওয়াপ স্পেস প্যারামিটার হিসেবে /dev/sdb2-র বদলে /store/swapfile ব্যবহার করতে হবে।
Swappiness
লিনাক্স কার্নেলকে টвиক করা যায় যাতে এটি কতটা আগ্রহীভাবে প্রসেসকে মেমরির বাইরে সওয়াপ করার চেষ্টা করবে তা ডিফাইন করা যায়। এই প্রবণতা একটি কার্নেল ভেরিয়েবল দ্বারা কন্ট্রোল হয় যাকে swappiness বলা হয়। swappiness 0 মানে কার্নেল যতটা সম্ভব সওয়াপিং এড়াবে, ১০০ মানে কার্নেল সওয়াপ স্পেস ব্যবহার করতে খুব আগ্রহী হবে। অনেক লিনাক্স ডিস্ট্রিবিউশনের ডিফল্ট সেটিং ৬০। ডাইনামিক্যালি নাম্বার পরিবর্তন করা সম্ভব এই কমান্ড ব্যবহার করে:
sudo sysctl vm.swappiness=10
একটি মান স্থায়ীভাবে সেট করতে, আপনাকে /etc/sysctl.conf ফাইলে vm.swappiness ভেরিয়েবলটি পরিবর্তন করতে হবে (বা যোগ করতে হবে, যদি এটি অস্তিত্বে না থাকে)।
লিনাক্সে সওয়াপ সম্পর্কে আপনার কোনো প্রশ্ন থাকলে আমাদের জানান।
এই আর্টিকেলটি প্রথমে Dec 2013-এ প্রকাশিত হয়েছিল এবং Aug 2020-এ আপডেট করা হয়েছিল।