স্মৃতি থেকে বের হয়ে গেলে আমি কীভাবে লিনাক্সকে জমাট বাঁধা থেকে রোধ করব?


25

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

ভবিষ্যতে আমি কীভাবে এটি প্রতিরোধ করতে পারি? এটি কি কমপক্ষে কোনও প্রতিক্রিয়াশীল কোর বা কোনও কিছু চালিয়ে রাখতে পারে না?


উত্তর:


15

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

আপনি অদলবদল বন্ধ করতে পারেন , তবে এটি কেবলমাত্র দুর্বল পারফরম্যান্স থেকে ওওএম-নিহত প্রক্রিয়াগুলিতে (এবং সমস্ত মজা যা ঘটায়) পরিবর্তিত করে, সাথে সাথে কম উপলব্ধ ডিস্ক ক্যাশে কারণে কর্মক্ষমতা হ্রাস পায়।

পর্যায়ক্রমে, আপনি একক প্রক্রিয়াটিকে একটি হাস্যকর পরিমাণে মেমরির গ্রহণ এবং অদলবদল ঘটানোর সম্ভাবনা সরাতে প্রতি-প্রক্রিয়া সংস্থান সীমাটি (সাধারণত হিসাবে হিসাবে rlimitএবং / অথবা হিসাবে উল্লেখ করা হয় ulimit) ব্যবহার করতে পারেন, তবে এটি আপনাকে মজাদার প্রক্রিয়াগুলির সাথে বিনোদনমূলক অঞ্চলে ঠেলে দেয় at অসুবিধাগুলি মুহুর্তগুলি কারণ তারা দিতে ইচ্ছুক সিস্টেমের চেয়ে তারা কিছুটা বেশি মেমরি চেয়েছিল।

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

ব্যক্তিগতভাবে, আমি রিসোর্স নিয়ন্ত্রণের "মূর্খ জিনিসগুলি করি না" পদ্ধতিতে সাবস্ক্রাইব করি। যদি আপনি মূল পেয়ে গেছেন তবে আপনি কোনও সিস্টেমে সব ধরণের ক্ষয়ক্ষতি করতে পারেন, এবং এমন কোনও কিছু করা যা আপনি সম্ভবত জানেন না যে ঝুঁকিপূর্ণ ব্যবসায়।


2
দুর্ভাগ্যক্রমে, "মূর্খ জিনিসগুলি করবেন না" যারা ক্রোমের মতো মেমরি- হগিং অ্যাপ্লিকেশন চালায় এমন ব্যবহারকারীদের সহায়তা করে না (সমস্যাগুলি দেখুন 134612 , 393395 )।
ড্যান ড্যাসক্লেস্কু

1
@ ড্যানডাসক্লেস্কু এবং এটি সর্বদা স্পষ্ট নয় যে আপনি বোকা কিছু করছেন। আমার মেশিনটি অন্য দিন ঝুলিয়েছিল কারণ আমি একটি (জটিল) এসকিউএল কোয়েরিতে একটি "ইউনিয়ন" পরিবর্তন করে "ইউনিয়ন সব" তে পরিণত করেছি।
মাইকেল

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

8

Tronic দ্বারা মন্তব্যে উল্লেখ করা হয়েছে, এটা কল করা হলে OOM kills-হত্যাকারী করা সম্ভব (মেমরি হত্যাকারী মধ্যে) সরাসরি কীবোর্ড সমাহার দ্বারা SysRq- F

SysRqকী- PrtScবোর্ডের কী-এর মধ্যে কীটি সাধারণত একত্রিত হয়।

OOM- ঘাতক কিছু প্রক্রিয়া (-es) মেরে ফেলে এবং সিস্টেমটি পুনরায় প্রতিক্রিয়াশীল হয়। ওওএম-হত্যাকারীর সরাসরি অ্যাক্সেস ডিফল্টরূপে সক্ষম নাও হতে পারে, এর অবস্থান কীভাবে পরীক্ষা করা যায় এবং / অথবা এটি সক্ষম করতে হয় তা জানতে এই প্রশ্নটি চেকআউট করুন ।

PS: এটি আমাকে অনেক সাহায্য করেছে। আমি মতামতের সাথে একমত যে এটি যদি Chrome এর কারণে ঘটে থাকে বা মেমরি লোভী সফ্টওয়্যার থেকে আসে তবে এই সমস্যাটি সম্পর্কে এটি সবচেয়ে দরকারী পরামর্শ। তবে আপনার মনে রাখতে হবে যে ওওএম-হত্যাকারী কিছু গুরুত্বপূর্ণ প্রক্রিয়াটিকে হত্যা করতে পারে, সাবধানতার সাথে এটি ব্যবহার করুন use


1

এটি 2007-এর পরে পরিচিত একটি বাগ - উচ্চ মেমরির ব্যবহারের ক্ষেত্রে সিস্টেম ফ্রিজ দেখুন ।

এই পরিস্থিতিতে উইন্ডোজ একটি ডায়ালগ প্রদর্শন করে যা ব্যবহারকারীকে এক বা একাধিক অ্যাপ্লিকেশন বন্ধ করতে সতর্ক করে।


0

আপনি যদি কার্নেলটি পুনরায় সংশোধন করার মতো মনে করেন তবে আপনি এই প্রশ্নের বিভাগটি থেকে প্যাচটি চেষ্টা করতে পারেন EDIT: /programming//q/52067753/10239615
এটি Active(file)উচ্চ মেমরির চাপের সময় পৃষ্ঠাগুলি উচ্ছেদ করে না এবং এটি OOM- হত্যাকারীকে মঞ্জুরি দেয় প্রায় তাত্ক্ষণিকভাবে ট্রিগার করতে কারণ কার্নেলের আর কোনও প্রক্রিয়াটির এক্সিকিউটেবল কোড পৃষ্ঠাগুলি হিমায়িত ওএসের জন্য পুনরায় পড়ার জন্য ধ্রুবক থেকে কয়েক মিনিট ব্যয় করতে হবে না।


-1

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

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


4
যে কোনও সিস্টেমে অদলবদল বন্ধ করা একটি খারাপ ধারণা, কারণ এটি অব্যবহৃত পৃষ্ঠাগুলি অদলবদল করতে দেয় না এবং ডিস্ক ক্যাশে মুক্ত স্থান ব্যবহার করে। মেমরি ফুটো হওয়ার সময় এটি বিশেষত সত্য।
womble

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

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

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

8
ওওএম কিলার স্বয়ংক্রিয়ভাবে চালিত হওয়ার আগে এটি অদলবদল ছাড়াই বা স্থির হয়ে যায় still এটি সত্যিই একটি কার্নেল বাগ যা স্থির করা উচিত (অর্থাত্ সমস্ত ডিস্ক ক্যাশে ফেলে দেওয়ার আগে ওম কিলার চালান)। দুর্ভাগ্যক্রমে কার্নেল বিকাশকারী এবং অন্যান্য অনেক লোক সমস্যা দেখতে ব্যর্থ। অক্ষম / সক্রিয় অদলবদল করা, আরও র‌্যাম কেনা, কম প্রক্রিয়া চালানো, সীমাবদ্ধতা নির্ধারণ ইত্যাদি সাধারণ পরামর্শগুলিতে কার্নেলের কম স্মৃতি পরিচালনার ফলে উটের বলগুলিকে চুষতে হয় এমন অন্তর্নিহিত সমস্যাটির সমাধান করে না। এদিকে, আমি সিস্টেমটি হিমশীতল হয়ে যাওয়ার পরে ম্যানুয়ালি ওওএম কিলার চালানোর পরামর্শ দিচ্ছি (সিস্টেআর-এফ) এটি দ্রুত পুনরুদ্ধার করবে।
ট্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.