কীভাবে সম্পূর্ণভাবে অদলবদল অক্ষম করবেন?


30

আমি ডেবিয়ান সিড ব্যবহার করছি, এক্সট 4 দিয়ে ফরম্যাট করা হার্ড ড্রাইভ, লিনাক্স 3.1 এ চলছে

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

তবে আমার বর্তমান সেটআপে, পটভূমিতে কম্পিউটারটি হিংস্র আই / ও থ্রুপুট সহ স্তব্ধ হয়। iotop kswapd0 কে অপরাধী হিসাবে প্রকাশ করেছে, যার অর্থ এটি অদলবদলের কারণে। swapon -sসক্ষম হওয়া যে কোনও অদলবদল নির্ধারণ করতে ব্যবহার করার পরে , আমি swapoff -aসমস্ত অদলবদল অক্ষম করে দিয়েছিলাম এবং swapon -sআবারও নিশ্চিত করেছিলাম যে সমস্ত সোয়াপ অক্ষম হয়েছে।

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

আমি কি চেষ্টা করে কিছু ভুল করছি swapoff -a? আচরণটি আগে যেভাবে করা হত তার চেয়ে আলাদা (সম্ভবত -.০ বার প্রাক)?


আসলেই তা বোঝা যায় না। swapoff -a নিজেই করা , যদি অদলবদলে স্টাফ থাকে তবে প্রচুর পরিমাণে I / O জেনারেট হয় (এবং পর্যাপ্ত সত্যিকারের র্যাম অ্যাভায়লাব না থাকলে প্রক্রিয়াগুলি মারা যাওয়ার ফলে ঘটতে পারে)। আপনি কি নিশ্চিত swapoff -aযে এটিই I / O "ঝড়" সৃষ্টি করে নি?
মাদুর

1
আমি মনে করি fstabঅদলবদল সম্পর্কে লাইনটি মন্তব্য করা যথেষ্ট । আচরণ যদি একই হয় তবে চেষ্টা করুন।
enzotib

@ ম্যাটকে swapoff -aস্থায়ীভাবে অদলবদল অক্ষম করা উচিত, এর অর্থ এটি পরবর্তী পুনরায় বুট করার পরে অক্ষম থাকা উচিত। আমি এটি নিশ্চিত করেছি। তবুও, পরবর্তী রিবুটের পরে অধিবেশন চলাকালীন I / O "ঝড়" এখনও ঘটে। রেকর্ডটির জন্য, আমি / O "ঝড়" আমার করা মুহুর্তে ঘটেনি swapoff -aকারণ অদলবদল 0 ছিল।
syockit

9
@syockit: swapoff -aহয় না স্থায়ী।
মাদুর

1
14 ঘন্টার মধ্যে ডেটাবেস লোডিং প্রায় 15% পেয়েছে। অদলবদল বন্ধ করে দেওয়া হয়েছে, এবং পরবর্তী প্রয়াসে এটি 4 ঘন্টার মধ্যে 40% এ পৌঁছেছে। স্বীকার করা যায় যে সার্ভারটি আন্ডার পাওয়ারেড এবং ম্যামের উপর অবনমিত রয়েছে তবে ওপেনসুএস চালু না করেই এই এক প্রক্রিয়ার জন্য আরও দ্রুত কাজ করে। সাধারণ মাইএসকিএল ডিবি লোড চলাকালীন ওএসের "আরও ভাল" এবং খনি সম্পর্কে মতামত নাটকীয়ভাবে পৃথক। সোয়াপ ড্রাইভটি / etc / fstab এ মন্তব্য করে পুনরায় বুট করা হয়েছে।
TheSatinKnight

উত্তর:


15

অদলবদল অক্ষম করা আপনি যা চান তা করবে না। আপনি এখনও সহিংস আই / ও থ্রুপুট পাবেন তবে এটি নোংরা পৃষ্ঠাগুলির চেয়ে পরিষ্কার পৃষ্ঠাগুলির হবে।

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

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

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


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

1
সমস্ত স্মৃতিতে সংক্ষিপ্ত পরিমাণে সবসময় বরাদ্দ হবে। লিনাক্স বিশেষভাবে এইভাবে সুর করা হয়। একটি কি cat /proc/meminfoলোড কয়েক ঘন্টা পরে কোনো টিপিক্যাল লিনাক্স বাক্সে।
ডেভিড শোয়ার্জ

2
@ সাইকিট আপনি যদি পেজিং অক্ষম করেন তবে আপনি কোনও প্রোগ্রাম পরিচালনা করতে পারবেন না। পেজিং হ'ল প্রক্রিয়া যার মাধ্যমে মেমরিতে ম্যাপ করা হয় সেগুলি দ্বারা ফাইলগুলি পড়া হয় are
ডেভিড শোয়ার্জ

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

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

13

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

(ulimit -d 400000; firefox) &

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


এটি কি ক্রোমিয়ামের জন্য কাজ করবে, বলুন, যেখানে আমাদের chromiumছোট ছোট মেমরি ব্যবহার করার প্রক্রিয়া রয়েছে?
jbodyman

@ জবেরিমন না, মেমরির সীমা প্রতি ব্যবহারকারীর চেয়ে প্রসেসের মধ্যে রয়েছে।
কাইল জোনস

এটি যখন স্মৃতি সীমাতে পৌঁছায় তখন কোনও নির্দিষ্ট সংকেত (যেমন, SIGHUP) প্রেরণের কোনও উপায় আছে কি?
জেরেমিয়া

1
@ জেরেমিয়া নং
কাইল জোন্স

আপনি যদি ম্যানুয়াল টিউনিংয়ের সাথে যেতে চান তবে আমি উলামিটের পরিবর্তে মেমরি সিগ্রুপ ব্যবহার করার পরামর্শ দেব কারণ মেমরি সিগ্রুপের সাহায্যে আপনি পুরো প্রক্রিয়া গোষ্ঠীর সীমা নির্ধারণ করতে পারেন এবং মেমরি বরাদ্দকরণ প্রক্রিয়াটি বন্ধ করতে কনফিগার করতে পারেন এবং আপনার ব্যবহারকারী মোড নীতি প্রক্রিয়াটি সিদ্ধান্ত নিতে পারে যে (উদাহরণস্বরূপ কিছু সংকেত প্রেরণ করুন, মেরে ফেলার প্রক্রিয়া নির্বাচন করুন, ফ্লাইয়ে স্মৃতির সীমা বাড়ান)। দেখুন kernel.org/doc/Documentation/cgroup-v1/memory.txt এবং kernel.org/doc/Documentation/cgroup-v2.txt বিস্তারিত জানার জন্য।
মিক্কো রেন্টালাইনেন

4

অদলবদ ব্যবহার করা হয়নি তা নিশ্চিত করার জন্য, বুটে কোনও swap যুক্ত হওয়া রোধ করা ভাল better এটি সিস্টেমের উপর নির্ভর করে swapবুট পরিষেবাটি অক্ষম করে বা কেবল অদলবদল এন্ট্রি করে মন্তব্য করার মাধ্যমে করা যেতে পারে /etc/fstab

আপনার হ্যাংআপের বিষয়টি যতটা সম্ভব, stop()ফাংশনটি /etc/init.d/swapএকটি সূত্র দিতে পারে:

stop()
{
       ebegin "Deactivating swap devices"

       # Try to unmount all tmpfs filesystems not in use, else a deadlock may
       # occure. As $RC_SVCDIR may also be tmpfs we cd to it to lock it
       cd "$RC_SVCDIR"
       umount -a -t tmpfs 2>/dev/null

       case "$RC_UNAME" in
               NetBSD|OpenBSD) swapctl -U -t noblk >/dev/null;;
               *)              swapoff -a >/dev/null;;
       esac
       eend 0
}

অচলাবস্থা সম্পর্কে অংশ লক্ষ্য করুন । অদলবদল বন্ধ করার আগে আপনি umount -a -t tmpfsনিজেই চেষ্টা করে দেখতে পারেন ।


সম্পাদনা:

সম্ভবত, আপনি sysctlসেটিংস সংশোধন করে এই লক্ষ্যটি অর্জন করতে পারেন ( এই প্রশ্নটি দেখুন )।


আমি নেই swapinit.d, কিংবা আমি এটা উপর আছে fstab, কিন্তু আমি আছে /etc/init.d/mountoverflowtmpযে মাউন্ট tmpfsজরুরি অবস্থা লগ গেছেন। অদলবদল ডিমনও কি ব্যবহার tmpfsকরে?
syockit

আপনি এটি অন্য কোথাও সক্ষম করে থাকতে পারেন - এটি সন্ধান করতে grep -RF swap /etc/চাইলে করুন। তবে পরিষেবাটি অক্ষম করতে আপনি কমান্ডটি ব্যবহার করবেন service(আইআইআরসি; আমি নিজেই দেবিয়ান ব্যবহার করি না)।
rozcietrzewiacz

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

লিনাক্স কীভাবে ভার্চুয়াল মেমরি পরিচালনা করে সে সম্পর্কে কিছু আছে যা আমি বুঝতে পারি না। মাধ্যমে: আমি সবচেয়ে সম্ভাব্য উপায় এ অক্ষম swap 'র করেছি swapoff, এবং এর মাধ্যমে vm.swappiness=0। তবুও kswapd0রান! আমি অবাক হয়েছি যদি এটি ২.৪ দিন থেকে হয় তবে…
সোকোকিট

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

2

প্রতিটি বুটের পরে /etc/fstabচালানোর চেয়ে স্ব্যাপ পার্টিশন এন্ট্রিতে মন্তব্য করা ভাল swapoff -a

আমার হার্ডওয়্যারে kswapd0 নিয়ে আমার একই সমস্যা রয়েছে।

টিউনিং vm.swappinessসিস্টেমের প্যারামিটারটি আমার পক্ষে সাহায্য করে না।

sysctl -w vm.swappiness=0

আমি প্রচুর পোস্ট, মেলিং তালিকাগুলি গুগল করেছিলাম এবং পড়েছি এবং এখন আমি মনে করি এটি কার্নেল বাগ।

যখন কোনও সক্রিয় অদলবদল নেই এবং ফ্রি মেমরি কম হয়ে যায় তখন কিছু থ্রেশহোল্ড (আমার ক্ষেত্রে প্রায় 300MB) সিস্টেম kswapd0 পাগলের কারণে প্রতিক্রিয়াহীন হয়ে যায়।

সম্ভবত এটি বিশেষ কনফিগারেশন এবং শর্তাদি সহ পুনরুত্পাদন করা হয়।

কারওর জন্য এটি সিস্টেমের পুনরায় ইনস্টলেশন দ্বারা kswapd0অক্ষমদের সাথে কাস্টম কার্নেল তৈরি করে অন্যদের জন্য পুনরায় বিভাজনযুক্ত সমাধান করা হয় ।


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

1

আমার সিস্টেমে (ডেবিয়ান সিড 2016-11-15), আমি এটি করেছি:

  1. এখনই অদলবদল অক্ষম করুন:

    swapoff -a
    
  2. swap পার্টিশন সহ / etc / fstab এ লাইনের মন্তব্য করুন

    #### #UUID=c6ddbc95-3bb5-49e1-ab25-b1c505e5360c none            swap    sw              0       0
    
  3. systemd এ অদলবদলকে মাউন্ট করা অক্ষম করুন:

    systemctl --type swap
    systemctl stop dev-sda6.swap
    systemctl mask dev-sda6.swap
    

এটা কল্পনা করা হবে। /etc/initramfs-tools/conf.d/resumeফাইলের মধ্যে অদলবদলের উল্লেখ রয়েছে । আমি জানি না এর উদ্দেশ্য কী? সম্ভবত এই ফাইলটি পরবর্তী রিবুটটিতে সমস্যা হয়ে উঠবে (আমি এখনও রিবুট করার চেষ্টা করি না, আমার আপটাইমটি মূল্যবান;))।


1

পটভূমিতে কম্পিউটারটি হিংস্র আই / ও থ্রুপুট সহ স্তব্ধ। iotop অপরাধী হতে kswapd0 প্রকাশ করে

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


এই কার্নেল প্যাচটি ইতিমধ্যে মূলত কী?
humanityANDpeace

@ হিউম্যানিটিএন্ডপিস সম্ভবত না, কারণ এটি খুব ভাল নয় (যেমন আমি প্রোগ্রামার নই), তবে আমি এটি নিয়ে কিছু সমস্যা নিয়েছিলাম, যেমন: কখনও কখনও, কাজের চাপের উপর নির্ভর করে, এই প্যাচটি নিয়ে, আপনি স্মৃতি থেকে সরে যেতে পারেন যার মধ্যে এই প্যাচটি না থাকলে আপনি থাকতেন না এবং এভাবে OOM- ঘাতক Xorg এবং xfwm4 কে মেরে ফেলবেন, আমি echo 1 | sudo tee /proc/sys/vm/drop_cachesযখন চালাব Active(file):( UN / CS / meminfo) 2GB (16G র‌্যাম সিস্টেমে) এর বেশি হয় তখন এটি সর্বোচ্চ 4G- এ যেতে পারে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.