আমার প্রচুর পরিমাণে নিখরচায় র‍্যাম থাকা সত্ত্বেও কেন অদলবদল ব্যবহৃত হচ্ছে?


208

আমি ভেবেছিলাম যে অদলবদলের পুরো সারাংশটি অস্থায়ী স্টোরেজ সুরক্ষা নেট হিসাবে কাজ করা ছিল যখন র‌্যাম পূর্ণ ছিল তবে আমার মাঝে মাঝে 3 জিবি ফ্রি র‌্যাম থাকা সত্ত্বেও আমার অদলবদল অবিচ্ছিন্নভাবে ব্যবহার করা হচ্ছে। এটা কি স্বাভাবিক?


3
বিষয়বস্তু বা নিম্নলিখিত কমান্ড আউটপুট শেয়ার করুন / ফাইল ভাল সাহায্য করতে আমাদের আপনার সমস্যার সুরাহা ( এই উত্তর নির্দেশাবলী ) : free -m,top -b 1
পর

আগামীকাল সেই আদেশগুলির পেস্টবিনগুলি দিয়ে প্রশ্নটি আপডেট করবে। এখনই 12 টা বেজে গেছে :(
মিস্টেরিও

"... যোগ করার জন্য আমার শিরোনামটি সম্পাদনা করা উচিত তবে এখনই যত্ন নেওয়ার জন্য আমি খুব ঘুমে আছি, সুতরাং তোমরা ছেলেরাও খুব একটা ঝাঁকুনি দাও": পি
ইশ

উত্তর:


188

আপনি আপনার "অদলবদল" মান পরিবর্তন করার চেষ্টা করতে পারেন:

থেকে উবুন্টু এর সোয়াপ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী :

অদলবদল কী এবং আমি কীভাবে এটি পরিবর্তন করব?

অদলবদল পরামিতি শারীরিক মেমরি থেকে বের হয়ে স্ব্যাপ ডিস্কে প্রসেসগুলি সরিয়ে নিতে কার্নেলের প্রবণতা নিয়ন্ত্রণ করে। ডিস্কগুলি র‍্যামের চেয়ে অনেক ধীর গতিতে, প্রক্রিয়াগুলি খুব আক্রমনাত্মকভাবে স্মৃতি থেকে সরিয়ে না থাকলে সিস্টেম এবং অ্যাপ্লিকেশনগুলির জন্য ধীর প্রতিক্রিয়ার সময় হতে পারে।

  1. অদলবদলের মান 0 এবং 100 এর মধ্যে থাকতে পারে

  2. অদলবদল = 0 যতক্ষণ সম্ভব শারীরিক মেমরি থেকে অদলবদল প্রক্রিয়াগুলি এড়িয়ে চলতে কার্নেলকে বলে। কার্নেল সংস্করণ 3.5 এবং এর চেয়েও নতুন এটি স্বাপিনতা অক্ষম করে।

  3. অদলবদল = 100 কর্নেলকে আক্রমণাত্মকভাবে শারীরিক স্মৃতি থেকে প্রসেসগুলি অদলবদল করতে এবং ক্যাশে অদলবদল করার জন্য বলে tells

উবুন্টুতে ডিফল্ট সেটিংস হ'ল অদলবদল = 60। অদলবদলের ডিফল্ট মান হ্রাস সম্ভবত একটি সাধারণ উবুন্টু ডেস্কটপ ইনস্টলেশন জন্য সামগ্রিক কর্মক্ষমতা উন্নত করবে। অদলবদল = 10 এর একটি মান সুপারিশ করা হয় তবে পরীক্ষায় নির্দ্বিধায়। দ্রষ্টব্য: উবুন্টু সার্ভার ইনস্টলেশনগুলির ডেস্কটপ সিস্টেমে বিভিন্ন কার্য সম্পাদনের প্রয়োজনীয়তা রয়েছে এবং 60 এর ডিফল্ট মান সম্ভবত আরও উপযুক্ত।

অদলবদল মান পরীক্ষা করতে

cat /proc/sys/vm/swappiness

অদলবদল মান পরিবর্তন করতে 10 এর অদলবদল মান সহ একটি অস্থায়ী পরিবর্তন (পুনরায় বুটে হারিয়ে যাওয়া) দিয়ে তৈরি করা যেতে পারে

sudo sysctl vm.swappiness=10

কোনও পরিবর্তন স্থায়ী করতে , আপনার প্রিয় সম্পাদকের সাথে কনফিগারেশন ফাইলটি সম্পাদনা করুন:

gksudo gedit /etc/sysctl.conf

Vm.swappiness অনুসন্ধান করুন এবং এর মানটি পছন্দসইভাবে পরিবর্তন করুন। যদি vm.swappiness উপস্থিত না থাকে তবে ফাইলটির শেষে এটি যুক্ত করুন:

vm.swappiness=10

ফাইলটি সংরক্ষণ করুন এবং পুনরায় বুট করুন।

এছাড়াও আপনি পরীক্ষা করে দেখতে পারেন: https://askubuntu.com/a/103916/54187


1
নিষ্ক্রিয় জল্পনা: এটি কার্য সম্পাদনের জন্য উপকারী হতে পারে - এমন পৃষ্ঠাগুলি যেগুলি অল্প সময়ের মধ্যে অ্যাক্সেস করা যায়নি সেগুলি স্থানের অদলবলে অনুলিপি করা যায়, যা মেমরির প্রয়োজন হলে ওএসগুলি সেগুলি দ্রুত উচ্ছেদ করতে দেয়, তবে পৃষ্ঠাগুলির বিষয়বস্তু স্মৃতিতে থেকে যায় ।
সাইমন রিখটার

7
@ সিমনরিখটার হ্যাঁ এটিই ধারণা। 60 এর অদলবদল সম্ভবত আধুনিক সিস্টেমে খুব আক্রমণাত্মক, যেহেতু এর অর্থ এখনও যখন আপনার কাছে ফ্রি মেমরির বেশ কয়েকটি জিগ থাকে তখন আপনি অদলবদল করতে শুরু করেন।
ব্রেন্ডন লং

1
sudo sysctl --load=/etc/sysctl.confপরিবর্তনগুলি প্রয়োগ করতে ফাইল সম্পাদনা করার পরে চালান
deFreitas

92

আপনার প্রশ্নের কয়েকটি ভিন্ন দিক রয়েছে।

প্রথমত, আপনার "ফ্রি" সংজ্ঞাটি কী। এটি লিনাক্সে (বা যে কোনও আধুনিক অপারেটিং সিস্টেম) শোনার মতো আসলে সহজ নয়।

লিনাক্স কীভাবে র‌্যাম ব্যবহার করে (খুব সরলীকৃত)

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

আদর্শভাবে, আপনার সমস্ত অ্যাপ্লিকেশনগুলির জন্য আপনার যথেষ্ট মেমরি রয়েছে এবং আপনার এখনও ক্যাশটির জন্য কয়েকশ 'এমবি বাকি রয়েছে। এই পরিস্থিতিতে, যতক্ষণ না আপনার অ্যাপ্লিকেশনগুলি তাদের মেমরির ব্যবহার বাড়ায় না এবং সিস্টেম ক্যাশে পর্যাপ্ত স্থান পাওয়ার জন্য লড়াই করছে না, ততক্ষণ কোনও অদলবদলের প্রয়োজন নেই।

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

এটি লিনাক্সের সাথে নির্দিষ্ট কোনও পরিস্থিতি নয় - সমস্ত আধুনিক অপারেটিং সিস্টেমগুলি এইভাবে কাজ করে। বিভিন্ন অপারেটিং সিস্টেমগুলি কেবল নিখরচায় র‍্যামকে আলাদাভাবে রিপোর্ট করতে পারে: কিছুতে তারা "ফ্রি" বিবেচনা করে এমন অংশ হিসাবে ক্যাশে অন্তর্ভুক্ত করে এবং কিছু নাও পারে।

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

লিনাক্স কীভাবে অদলবদল ব্যবহার করে (আরও সরলীকৃত)

মসৃণ চলমান ক্যাশে পর্যাপ্ত বাকী নেই এমন পর্যাপ্ত মেমরি ব্যবহার করার পরে, লিনাক্স র‌্যাম থেকে অদলবদলের জন্য কিছু অব্যবহৃত অ্যাপ্লিকেশন মেমরি পুনরায় বরাদ্দ করার সিদ্ধান্ত নিতে পারে।

এটি একটি নির্দিষ্ট কাট-অফ অনুযায়ী না করে। আপনি বরাদ্দের একটি নির্দিষ্ট শতাংশে পৌঁছানোর মতো নয় তবে লিনাক্স অদলবদল শুরু করে। এটির পরিবর্তে "অস্পষ্ট" অ্যালগরিদম রয়েছে। এটি অনেক কিছু বিবেচনায় নেয়, যা "মেমরি বরাদ্দের জন্য কতটা চাপ আছে" দ্বারা সর্বোত্তমভাবে বর্ণনা করা যেতে পারে। যদি নতুন মেমরি বরাদ্দের জন্য অনেক "চাপ" থাকে, তবে এটি আরও কিছু জায়গা তৈরির জন্য কিছু পরিবর্তন হওয়ার সম্ভাবনা বাড়িয়ে তুলবে। যদি "চাপ" কম থাকে তবে তা এই সম্ভাবনাগুলি হ্রাস করবে।

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

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

ডিস্কে অদলবদল করার জন্য বাছাই করার সময়, সিস্টেমটি এমন মেমোরি বাছাই করার চেষ্টা করে যা বাস্তবে ব্যবহৃত হয় না - পড়তে বা লেখা থেকে। এটি গণনা করার জন্য এটিতে বেশ সহজ অ্যালগরিদম রয়েছে যা বেশিরভাগ সময় ভালভাবেই পছন্দ করে।

আপনার যদি এমন একটি সিস্টেম থাকে যেখানে আপনার প্রচুর পরিমাণে র‍্যাম থাকে (লেখার সময় 8 জিবি একটি সাধারণ লিনাক্স ডিস্ট্রোর জন্য একটি বিশাল পরিমাণ) তবে আপনি খুব কমই এমন পরিস্থিতিতে পড়তে পারবেন যেখানে অদলবলের প্রয়োজন হয় না। এমনকি আপনি অদলবদল বন্ধ করার চেষ্টা করতে পারেন। আমি কখনই এটি করার পরামর্শ দিই না তবে কেবল কারণ আপনি কখনই জানেন না যে কখন আরও র্যাম আপনাকে কোনও অ্যাপ্লিকেশন ক্র্যাশ থেকে রক্ষা করতে পারে। তবে যদি আপনি জানেন যে আপনার এটির প্রয়োজন হবে না তবে আপনি এটি করতে পারেন

তবে কীভাবে আমার সিস্টেমে গতি বাড়ানো যাবে? ধীর জিনিসগুলি অদলবদল করে না?

র‌্যাম থেকে অদলবদলে ডেটা স্থানান্তর করার কাজটি একটি ধীরগতি সম্পন্ন অপারেশন, তবে যখন কার্নেলটি পুরোপুরি সুবিধাগুলি ছাড়িয়ে যাবে এ সম্পর্কে নিশ্চিত তখনই তা নেওয়া হয়। উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশন মেমরিটি যদি এমন পর্যায়ে পৌঁছে যায় যে আপনার প্রায় কোনও ক্যাশে নেই এবং আপনার আই / ও খুব অদক্ষ হয়ে পড়েছে তবে আপনি কিছুটা মেমরি মুক্ত করেও বাস্তবে আপনার সিস্টেমের থেকে অনেক বেশি গতি পেতে পারেন even এটি মুক্ত করার জন্য অদলবদলের প্রাথমিক ব্যয়ের পরে।

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

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

ডেটা অদলবদল হয়ে গেলে, আবার কখন তা প্রকাশিত হয়?

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


5
বিস্তারিত ব্যাখ্যার জন্য +1। আমি আমার কম্পিউটারগুলিতে 2GiB অদলবদল রাখতে চাই। যদি কিছু খারাপ হয়ে যায় - মেমোরি ফাঁস হয় ইত্যাদি ইত্যাদি, তবে আপনি অদলবদলটি উপরে যেতে দেখবেন এবং স্মৃতি থেকে বের হওয়ার আগে সমস্যাটি সন্ধান করতে পারেন। এটি একটি সুরক্ষার নেট পাশাপাশি একটি পারফরম্যান্স সরঞ্জাম।
জো

1
আমার নেটবুকটিতে, যার র‌্যাম মাত্র 2 জিবি রয়েছে, আমি 4 জিপি অদলবদল রাখি। এটি কারণ আমি নেটবুকটি অনেক বেশি ব্যবহার করি যার জন্য এটি উদ্দিষ্ট ছিল এবং আমার প্রোগ্রামগুলিতে প্রায়শই 2 জিবি-র বেশি মেমরির প্রয়োজন হয়। লিনাক্স যেহেতু স্মৃতি বহির্ভূত পরিস্থিতিতে খুব খারাপ আচরণ করে, তাই আমি একটি বড় সুরক্ষা জাল পছন্দ করি। এবং আমার কাছে ডিস্কের প্রচুর জায়গা রয়েছে।
স্কট সিরিয়েন্স

যদি আপনার প্রোগ্রামগুলিতে ঘন ঘন 2 জিবি মেমরির প্রয়োজন হয় তবে আমি সেখানে আরও বেশি র‌্যাম চেকিং বিবেচনা করব (এটি অতি সস্তা!) ক্লান্তিকর র‌্যামের কার্যকারিতা ক্ষতিগ্রস্থ করতে পারে onna অন্যান্য পাঠকদের সুবিধার জন্য: যে আপনি শুধু ক্যাশ মেমরি যা হয় না বেরাচ্ছেন করা অনুমিত - অন্যান্য রেফারেন্স দেখতে প্রাপ্তিসাধ্য র্যাম বরা করতে free -m
থোমাস্রুটার

2
@ নিউনওভারলোড: আমার কেবল এই বিষয়টি লক্ষ্য করা উচিত যে এইচপি অনুযায়ী আমার নেটবুকের সর্বাধিক র‌্যাম 1 জিবি। আমি এখন সেখানে 2 গিগাবাইট পেয়েছি এবং ইন্টারনেট সূত্রগুলি 2GB প্রকৃত সর্বাধিক বলে মনে করে। সুতরাং এই ধরণের workaround জন্য প্রয়োজন।
স্কট সিভেরেন্স

@ থোমাস্রুটটার: আপনার উত্তরটি কীভাবে বড় সার্ভারগুলির জন্য বদলে যায়, আমার একজনের 1 টিবি (হ্যাঁ একটি পূর্ণ টেরাবাইট) ম্যাম রয়েছে এবং এখনও অদলবদল ব্যবহার করছেন; কোন অদলবদল সেটিং এবং কোন আকারের অদলবদল আপনি সুপারিশ করবেন?
ক্রিসিনমটাউন

24

অদলবদলের মান নির্ধারণ করা প্রতিটি পরিস্থিতিতে কাজ করে না। যদি এটি আপনার পক্ষে কাজ করে তবে দুর্দান্ত। যদি তা না হয়, আমি নিয়মিতভাবে অদলবদল বন্ধ করে আবার চালু করে সাফ করার জন্য একটি স্ক্রিপ্ট লিখেছি।

আপনি যদি সতর্ক না হন তবে টগলিং অদলবদল কিছুটা ঝুঁকিপূর্ণ। আপনি র্যাম সবকিছু রাখা পর্যাপ্ত মুক্ত র্যাম না থাকে তাহলে প্লাস swap 'র মধ্যে সবকিছু, নিষ্ক্রিয় করতে swap' র আপনার সিস্টেমে অপ্রতিক্রিয়ামূলক কারণ হবে চেষ্টা করছে। আমার স্ক্রিপ্টটি প্রথমে পর্যাপ্ত নিখরচায় র‌্যাম রয়েছে কিনা তা যাচাই করে (যা কিছুটা সময় নিচ্ছে যেমন মুক্ত র‌্যামের আসল পরিমাণটি নিখরচায় freeহিসাবে রিপোর্ট করা থেকে আলাদা ) তবে কেবল যদি তাই হয় তবে অদলবদল টগল করে। তবে, আপনি যদি র‌্যামে কিছুটা ছোট হন তবে স্ক্রিপ্ট চলাকালীন আর একটি বড় প্রক্রিয়া শুরু করবেন না। এটা এখানে:

#!/bin/bash

# Make sure that all text is parsed in the same language
export LC_MESSAGES=en_US.UTF-8
export LC_COLLATE=en_US.UTF-8
export LANG=en_US.utf8
export LANGUAGE=en_US:en
export LC_CTYPE=en_US.UTF-8

# Calculate how much memory and swap is free
free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"

# Do the work
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    swapoff -a
    swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi

আপনাকে অবশ্যই এই স্ক্রিপ্টটি মূল হিসাবে চালাতে হবে (যেমন, সহ sudo) with এই স্ক্রিপ্টটি আপনার সিস্টেমকে প্রতিক্রিয়াবিহীন ছেড়ে দেবে না; আপনার যদি অপর্যাপ্ত র‌্যাম পাওয়া যায় তবে তা অদলবদল টগল করতে অস্বীকার করবে। আমি প্রায় পাঁচ বছর ধরে সমস্যা ছাড়াই এই স্ক্রিপ্টটি ব্যবহার করেছি।


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

6
যদি কোনও কিছু অদলবদ্রে সরানো হয়ে থাকে এবং এটি অদলবদলে থেকে যায় তবে এটি সাধারণত একটি ভাল জিনিস it এর অর্থ হ'ল ডেটা আসলে ব্যবহার করা হচ্ছে না, এবং এটি আপনার কিছু র‌্যামকে অন্যান্য স্টাফের জন্য ছেড়ে দিয়েছে, এর ফলে গতিবেগের সম্ভাবনা বাড়বে। আপনাকে কী বিশ্বাস করতে পরিচালিত করেছে যে এই ডেটা অদলবদল করা উচিত নয় এবং পরিবর্তে আরও মূল্যবান র‌্যাম গ্রহণ করা উচিত? সাধারণত কোনটি অব্যবহৃত রয়েছে তা জেনে কার্নেলের পক্ষে বেশ ভাল, এবং র‌্যাম মুক্ত করার জন্য যা নিরাপদে অদলবদলে থাকতে পারে।
thomasrutter

@ নিউন: মনে রাখবেন যে আমার মেশিনগুলিতে যথাক্রমে 2 জিবি এবং 3 জিবি র‌্যাম রয়েছে, যা এই দিনগুলিতে খুব কম little প্রমাণ রয়েছে কর্মক্ষেত্রে। উদাহরণস্বরূপ, মেনুগুলি আনতে বা প্রোগ্রামগুলিতে স্যুইচিং অদলবদলের কারণে ধীর হতে পারে, যেমন কমপোসের ভিজ্যুয়াল এফেক্টসও হতে পারে। এই অলসতা অদলবদলকে টগল করে নিরাময় করা হয়, এভাবে প্রদর্শিত হয় যে কমপক্ষে কিছু পরিস্থিতিতে কার্নেলের অপ্টিমাইজেশান অ্যালগরিদমগুলি সাবঅপটিমাল। আমি বারবার অভিজ্ঞতা নিয়ে তর্ক করতে পারি না।
স্কট সিরিয়েন্স

ইসস !! এটি কেবল অদলবদলের 0% এ উন্নীত হয়েছে .... আমার এই সম্পূর্ণ প্রশ্ন এবং এর উত্তরগুলি দেখার জন্য আমার খুব বেশি সময় ছিল না তবে আমি যখন কিছু ফ্রি সময় পাই তখন এটি পড়তে আমি পছন্দ করি।
আজকেরএম

কেন আপনি কেবল স্বল্পমূল্যে অদলবদল সেট করবেন না? এটি আপনার স্ক্রিপ্টের মতো একই কাজ করছে বলে মনে হয় তবে আরও নিয়ন্ত্রিত ফ্যাশনে।
jhfrontz

4

সাধারণভাবে অদলবদল এখনকার দিনের সিস্টেমে অব্যবহৃত থাকে। আমার অভিজ্ঞতায়, নিবিড় ক্রিয়াকলাপ ছাড়াই দীর্ঘকাল ধরে চলমান প্রক্রিয়াগুলি লিনাক্সের মাধ্যমে অদলবদলে স্থানান্তরিত হয়।
এটি কয়েকটি প্রভাবিত প্রোগ্রামকে ধীর করে দেয়।
আপনার যদি প্রচুর র‌্যাম মুক্ত থাকে তবে আপনি কমান্ডটি চালিয়ে অদলবদলটি স্যুইচ করতে পারেন:
swapoff -av(এর জন্য আপনার sudoঅধিকারের দরকার হবে))
যদি আপনি সোয়াপ অফটি পছন্দ করেন না, তবে আপনি প্রতিসম কমান্ডটি ব্যবহার করে এটি চালু করতে পারেন:
swapon -av( আবার sudoপ্রয়োজন)।


12
সম্পূর্ণভাবে বন্ধ swap 'র বাঁক Overkill যেহেতু swapiness = 0 একই জিনিস আছে, কিন্তু নিরাপদ (যদি আপনি হয় না মেমরি অত্যধিক কাপড় দিয়ে শেষ, এটা swap' র কিছু নিক্ষেপ করা হবে)।
ব্রেন্ডন লং

@ ব্রেন্ডনলং ফেয়ার পয়েন্ট .. আমাকে শেখানোর জন্য ধন্যবাদ। :)
drake01

3

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

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

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

একটি চিম্টিতে আপনি কোনও অদলবদল ডিভাইস হিসাবে একটি ফাইল ব্যবহার করতে পারেন। আপনার অস্থায়ীভাবে অতিরিক্ত অদলবদলের স্থান প্রয়োজন হলে এটি দরকারী।


2

আমি স্কট সিরিয়েন্সের স্ক্রিপ্ট সম্পাদনা করে ফ্রি এর নতুন সংস্করণগুলির সাথে মেলে যা ইতিমধ্যে মোট উপলব্ধ মেমরি ক্ষেত্র অন্তর্ভুক্ত।

#!/bin/bash

free_mem="$(free | grep 'Mem:' | awk '{print $7}')"
used_swap="$(free | grep 'Swap:' | awk '{print $3}')"

echo -e "Free memory:\t$free_mem kB ($((free_mem / 1024)) MiB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MiB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $free_mem ]]; then
    echo "Freeing swap..."
    sudo swapoff -a
    sudo swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.