হ্যাঁ.
খুব জোরালো, নিষেধকারী কারণ (যেমন, কোনও ডিস্ক নেই বা কেবল নেটওয়ার্ক ডিস্কের উপস্থিত নেই) ব্যতীত আপনার অবশ্যই অবশ্যই সর্বদা অদলবদ সক্ষম করা উচিত । আপনার প্রায়শই প্রস্তাবিত হাস্যকর আকারের (যেমন, র্যামের পরিমাণের দ্বিগুণ) ক্রম অনুসারে কী অদলবদল করা উচিত? ভাল, না ।
কারণটি হ'ল অদলবদল কেবল তখনই কার্যকর হয় না যখন আপনার অ্যাপ্লিকেশনগুলি শারীরিক র্যামের চেয়ে বেশি মেমরি গ্রহণ করে (আসলে, সেই ক্ষেত্রে, স্ব্যাপটি মোটেই কার্যকর হয় না কারণ এটি কর্মক্ষমতা মারাত্মকভাবে প্রভাবিত করে)। Swap 'র জন্য প্রধান উদ্দীপক আজকাল হয় না জাদুর 32 GiB মধ্যে RAM এর 16GiB ঘুরে, কিন্তু ইনস্টল প্রাপ্তিসাধ্য RAM এর আরও দক্ষ ব্যবহার করতে।
একটি আধুনিক কম্পিউটারে, র্যাম অব্যবহৃত হয় না। অব্যবহৃত র্যাম এমন একটি জিনিস যা আপনি কেবল সেইসাথে অর্থ কিনে এবং সংরক্ষণ করতে পারেন না। অতএব, আপনার লোড করা বা যেকোন কিছু যা অন্যথায় মেমরি-ম্যাপযুক্ত, যে কোনও কিছু পরে যেকোন সময় পরে পুনরায় ব্যবহার করা যেতে পারে (সুরক্ষার সীমাবদ্ধতায় সীমাবদ্ধ) ক্যাশে হচ্ছে। খুব শীঘ্রই পর মেশিন বুট করার পরে, সব শারীরিক র্যাম জন্য ব্যবহার করা হয়েছে হবে কিছু ।
আপনি যখনই অপারেটিং সিস্টেম থেকে একটি নতুন মেমরি পৃষ্ঠা চাইবেন, মেমরি পরিচালককে একটি শিক্ষিত সিদ্ধান্ত নিতে হবে:
- বাফার ক্যাশে থেকে একটি পৃষ্ঠা মুছুন
- ম্যাপিং থেকে একটি পৃষ্ঠা মুছুন (বেশিরভাগ সিস্টেমে কার্যকরভাবে # 1 এর মতো)
- এমন একটি পৃষ্ঠা সরিয়ে ফেলুন যা দীর্ঘদিন অ্যাক্সেস পায়নি - অগ্রণীত কখনও নয় - অদলবদল করতে (এটি আসলে এমনকি শেষের মুহুর্তে প্রযোজ্যভাবে ঘটতে পারে না)
- আপনার প্রক্রিয়াটিকে হত্যা করুন, বা একটি এলোমেলো প্রক্রিয়া (OOM) হত্যা করুন
- কর্নেল আতঙ্ক
বিকল্প # 4 এবং # 5 খুব অনাকাঙ্ক্ষিত এবং কেবল তখনই ঘটবে যদি অপারেটিং সিস্টেমের অন্য কোনও পছন্দ না থাকে। বিকল্প # 1 এবং # 2 এর অর্থ হল যে আপনি এমন কোনও কিছু ফেলে দিচ্ছেন যা সম্ভবত আপনার খুব শীঘ্রই আবার প্রয়োজন হবে। এটি নেতিবাচকভাবে কর্মক্ষমতাকে প্রভাবিত করে।
বিকল্প # 3 এর অর্থ হ'ল আপনি এমন কিছু সরিয়ে নিয়েছেন যা আপনার (সম্ভবত) খুব শীঘ্রই কোনও সময়ের প্রয়োজন হয় না ধীর স্টোরেজটিতে। এটি ঠিক আছে কারণ এখন আপনার যা কিছু প্রয়োজন তা দ্রুত র্যাম ব্যবহার করতে পারে।
বিকল্প # 3 অপসারণ করে আপনি কার্যকরভাবে অপারেটিং সিস্টেমটিকে # 1 বা # 2 করার মধ্যে সীমাবদ্ধ করেছেন। কোনও পৃষ্ঠা ডিস্ক থেকে পুনরায় লোড করা অদলবদল থেকে পুনরায় লোড করার সমান, স্বাপ থেকে পুনরায় লোড করা ছাড়া সাধারণত কম সম্ভাবনা থাকে (সঠিক পেজিং সিদ্ধান্ত নেওয়ার কারণে)।
অন্য কথায়, অদলবদল অক্ষম করে আপনি কিছুই অর্জন করতে পারেন না, তবে মেমরির অনুরোধটি মোকাবেলায় আপনি অপারেশন সিস্টেমের দরকারী বিকল্পগুলির সীমাবদ্ধ করেন যা নাও হতে পারে তবে খুব সম্ভবত একটি অসুবিধাও হতে পারে (এবং কখনই কোনও সুবিধা হবে না)।
[Edit]
mmap
ম্যানপেজটির যত্নবান পাঠক , বিশেষত বর্ণনার বিবরণ MAP_NORESERVE
, অন্য একটি ভাল কারণ লক্ষ্য করবে যে "পর্যাপ্ত" শারীরিক স্মৃতিশক্তি সহ এমন কোনও সিস্টেমে অদলবদলের কিছুটা প্রয়োজনীয়তাও রয়েছে:
"যখন অদলবদল স্থান সংরক্ষিত না থাকে কোনও শারীরিক স্মৃতি উপলব্ধ না হলে কোনও লেখার জন্য SIGSEGV পেতে পারে" "
- এক মুহুর্ত অপেক্ষা কর, তার মানে কী?
আপনি যদি কোনও ফাইল ম্যাপ করেন তবে আপনি ফাইলটির বিষয়বস্তুগুলিকে সরাসরি নিজের প্রোগ্রামের ঠিকানার জায়গাতে যাদু দ্বারা কোনওভাবে ম্যাজিক দ্বারা অ্যাক্সেস করতে পারবেন। কেবলমাত্র পঠনযোগ্য অ্যাক্সেসের জন্য, অপারেটিং সিস্টেমটিকে নীতিগতভাবে শারীরিক মেমরির একক পৃষ্ঠার চেয়ে বেশি দরকার নেই যা প্রতিবার আপনি কোনও ভিন্ন ভার্চুয়াল পৃষ্ঠা অ্যাক্সেস করার সময় বিভিন্ন ডেটা দিয়ে পুনরায় তৈরি করতে পারে (দক্ষতার কারণে, যা করা হয় তা অবশ্যই নয়, তবে নীতিগতভাবে আপনি শারীরিক মেমরির একক পৃষ্ঠায় টেরাবাইটের মূল্যবান ডেটা অ্যাক্সেস করতে পারেন)। এখন কি যদি আপনি এছাড়াওএকটি ফাইল ম্যাপিং লিখুন? এই ক্ষেত্রে, অপারেটিং সিস্টেমে অবশ্যই একটি দৈহিক পৃষ্ঠা থাকতে হবে - বা স্বাপের স্থান - লিখিত প্রতিটি পৃষ্ঠার জন্য প্রস্তুত। নোংরা পৃষ্ঠাগুলি রাইবব্যাক প্রক্রিয়াটি কাজ না করা অবধি ডেটা রাখার অন্য কোনও উপায় নেই (যা কয়েক সেকেন্ড হতে পারে)। এই কারণে, ওএস রিজার্ভগুলি (তবে অগত্যা কখনও প্রতিশ্রুতি দেয় না) অদলবদল করে, তাই কোনও শারীরিক পৃষ্ঠা অব্যবহৃত না হওয়ার ক্ষেত্রে যদি আপনি ম্যাপিংয়ে লিখছেন (তবে এটি বেশ সম্ভব এবং স্বাভাবিক অবস্থা), আপনি ' পুনরায় নিশ্চিত যে এটি এখনও কাজ করবে।
এখন যদি কোন অদলবদল হয় না? এর অর্থ হ'ল কোনও অদলবদু সংরক্ষণ করা যাবে না (দুহ!), এবং এর অর্থ হ'ল নিখরচায় কোনও নিখরচায় দৈহিক পৃষ্ঠা নেই, এবং আপনি কোনও পৃষ্ঠায় লিখছেন, আপনি আপনার প্রক্রিয়াটি গ্রহণের আকারে একটি সুন্দর চমক পেয়ে যাচ্ছেন একটি বিভাজন ত্রুটি, এবং সম্ভবত হত্যা করা হচ্ছে।
[/ Edit]
যাইহোক, র্যামের আকারের দ্বিগুণ আকারে অদলবদল করার প্রচলিত সুপারিশটি অযৌক্তিক। যদিও ডিস্কের স্থানটি সস্তা, ততটা অদলবদলটি অর্পণ করার কোনও মানে হয় না। সস্তা কিছু নষ্ট করা এখনও অপব্যয়যুক্ত এবং আপনি একেবারে অদলবদল করতে চান না এবং কয়েকশ মেগাবাইট (বা আরও বড়) আকারের কাজ সেট করে চলেছেন।
কোনও একক "সঠিক" অদলবদুর আকার নেই (ব্যবহারকারী এবং মতামত রয়েছে এমন অনেকগুলি "সঠিক" আকার রয়েছে)। আমি সাধারণত র্যাম আকার নির্বিশেষে একটি স্থির 512MiB নির্ধারণ করি যা আমার পক্ষে খুব ভাল কাজ করে। এর পিছনে যুক্তিটি হ'ল 512MiB এমন একটি জিনিস যা আপনি আজকাল সর্বদা সামর্থ্য রাখতে পারেন এমনকি একটি ছোট ডিস্কেও । অন্যদিকে, বেশ কয়েকটি গিগাবাইট অদলবদল এর চেয়ে ভাল আর কিছু নয়। আপনি কিছু ব্যবহার করছেন না, যদি কিছু মারাত্মকভাবে ভুল হয়ে থাকে except
এমনকি কোনও এসএসডি-তেও অদলবদলটি র্যামের চেয়ে কম গতিবেগের আদেশ (বাস ব্যান্ডউইদথ এবং বিলম্বের কারণে), এবং কিছু বদলে নেওয়া খুব গ্রহণযোগ্য যে সম্ভবত আবার প্রয়োজন হবে না (যেমন আপনার সম্ভবত সম্ভবত হবে না) আবার এটা সোয়াপিং তাই প্রাপ্তিসাধ্য পৃষ্ঠাগুলির পুকুর কার্যকরভাবে) বিনামূল্যে জন্য বৃহদাকার হয়, যদি সত্যিই প্রয়োজন (অর্থাৎ, আপনি যেমন একটি 50GiB ডেটা সেটটি ব্যবহার করে একটি অ্যাপ্লিকেশন আছে) swap- র যথেষ্ট পরিমাণে, আপনি প্রায় কাছাকাছি হারিয়ে করছি।
আপনার কম্পিউটার একবারে গিগাবাইটের মূল্যবান পৃষ্ঠাগুলি অদলবদল করতে শুরু করলে, সমস্ত কিছু ক্রল হয়ে যায়। সুতরাং, বেশিরভাগ লোকের জন্য (আমাকে সহ) এটি কোনও বিকল্প নয় এবং অতএব এতটা সোয়াপ থাকা কোনও অর্থহীন নয়।