উত্তর:
আরেকটি পদ্ধতি হ'ল মেমরির অতিরিক্ত সংকেত অক্ষম করা।
আপনার স্মৃতি ম্যানেজমেন্টে কিছুটা উদ্বিগ্নতা ফিরিয়ে আনতে:
- ওম কিলারটি অক্ষম করুন (
vm.oom-kill = 0
/etc/sysctl.conf- এ রাখুন )- মেমরি overcommit অক্ষম (রাখুন
vm.overcommit_memory = 2
মধ্যে/etc/sysctl.conf
)এই সেটিংসটি লিনাক্সকে প্রচলিত পদ্ধতিতে আচরণ করতে সক্ষম করবে (যদি কোনও প্রক্রিয়া উপলব্ধের চেয়ে বেশি মেমরির অনুরোধ করে তবে
নোট করুন যে এটি একটি ত্রৈমাসিক মান:malloc()
ব্যর্থ হয়ে যায় এবং মেমরির অনুরোধ করা প্রক্রিয়াটি সেই ব্যর্থতার সাথে লড়াই করতে পারে বলে আশা করা হয়)।
- 0 = "আমাদের কাছে পর্যাপ্ত র্যাম রয়েছে কিনা অনুমান করুন"
- 1 = "সর্বদা হ্যাঁ বলুন"
- 2 = "আমাদের স্মৃতি না থাকলে না বলুন"
এটি অ্যাপ্লিকেশনটিকে মেমরির বাইরে চলে যাওয়ার জন্য পরিচালনা করতে বাধ্য করবে এবং সম্ভবত এর লগস / কর্ড্প / ইত্যাদি আপনাকে দরকারী কিছু দিতে পারে।
দ্রষ্টব্য: যখন আপনার সিস্টেমের স্মৃতিশক্তি শেষ হয়ে যায়, আপনি নতুন প্রক্রিয়াগুলি পোড়াতে সক্ষম হবেন না! আপনি সিস্টেম থেকে লক আউট হতে পারে।
echo 1 > /proc/sys/vm/oom_dump_tasks
যা সর্বাধিক মনে হয় যে আপনি মেমরির বাইরে থাকা ত্রুটিগুলি প্রদর্শন করতে কার্নেলটি পেতে পারেন।
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
সিস্টেম-ওয়াইড টাস্ক ডাম্প (কার্নেল থ্রেডগুলি বাদ দিয়ে) উত্পাদনের জন্য সক্ষম করে যখন কার্নেল একটি ওওএম-কিলিং সম্পাদন করে এবং পিড, ইউআইডি, টিজিড, ভিএম আকার, আরএসএস, এনআর_পেটস, সোয়েন্টস, ওম_স্কোর_এডজে স্কোর এবং নাম অন্তর্ভুক্ত করে। এটি OOM হত্যাকারীকে কেন ডাকা হয়েছিল তা নির্ধারণ করতে, এটি যে দুর্বৃত্ত কাজটি ঘটেছে তা সনাক্ত করতে এবং OOM হত্যাকারী যে কাজটি হত্যা করেছিল তা কেন নির্ধারণ করেছিল তা নির্ধারণ করতে এটি সহায়ক।
যদি এটি শূন্যতে সেট করা থাকে তবে এই তথ্যটি চাপা দেওয়া হবে। হাজার হাজার টাস্ক সহ খুব বড় সিস্টেমে এটি প্রতিটিের জন্য মেমরি স্টেটের তথ্য ডাম্প করা সম্ভব হয় না। যখন তথ্য পছন্দসই না হতে পারে তখন এ জাতীয় সিস্টেমগুলিকে ওওএম শর্তে একটি পারফরম্যান্স জরিমানা কাটাতে বাধ্য করা উচিত নয়।
যদি এটি অ-শূন্যতে সেট করা থাকে, যখনই ওওএম কিলার প্রকৃতপক্ষে কোনও মেমরি-হগিংয়ের কাজটি হত্যা করে তখন এই তথ্য প্রদর্শিত হয়।