প্রক্রিয়াগুলির মেমরি গ্রাহনের উপর কোনও ধরণের নরম সীমাবদ্ধতা আরোপ করা কি সম্ভব?


10

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

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

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

সম্ভাব্য ধরণের সমাধানের সাথে আমি আরও সুখী হব:

  • যদি কোনও প্রক্রিয়া একটি নির্দিষ্ট মেমোরির ব্যবহার ছাড়িয়ে যায় তবে এটি কৃত্রিমভাবে থ্রোটলড হয় যাতে সিস্টেমের বাকী অংশ প্রতিক্রিয়াশীল থাকে।
  • যদি কোনও প্রক্রিয়া একটি নির্দিষ্ট মেমোরির ব্যবহার ছাড়িয়ে যায়, তবে এটি পরে চলছে SIGSTOPতাই আমার কী করতে হবে তা বের করার সময় পাবে।
  • যদি কোনও প্রক্রিয়া র‌্যামের সীমাতে পৌঁছে যায়, দুর্দান্ত অদলবদল শুরু হওয়ার আগে আমি একটি সতর্কতা পাই ।

এই ধরনের আচরণ, বা অনুরূপ পাওয়ার কোনও উপায় আছে কি?


2
আপনি ক্রিয়াগুলি ব্যবহার করে কোনও প্রক্রিয়া বা প্রক্রিয়া গোষ্ঠী দ্বারা ব্যবহৃত র‌্যামের পরিমাণ সীমাবদ্ধ করতে পারেন। stackoverflow.com/questions/3043709/…
মার্ক প্লটনিক

2
এটি আক্ষরিকভাবে জিনিসটির সঠিক ধরণের ulimitজন্য।
ডোপঘোটি

1
উলিমিট-এম ব্যবহার করার জিনিস হবে, যদি না এটি ২.৪.৩০ সাল থেকে লিনাক্সে কাজ করে না, এবং কেবল তার আগে কিছু পরিস্থিতিতে কাজ করেছিল। unix.stackexchange.com/questions/129587/…
মার্ক

নিকেলোড
ওলে

উত্তর:


6

নিকেলোড - আপনার পরিবর্তনটি ঠিক একই অবস্থার জন্য তৈরি করা হয়েছে: এটি অদলবদল কার্যকলাপকে দেখায়:

  • যদি অদলবদল হয়: প্রক্রিয়াটি চলুক
  • যদি অদলবদল করে: প্রক্রিয়াটি চলুক
  • যদি অদলবদল করে এবং বাইরে: অদলবদল বন্ধ না হওয়া অবধি প্রক্রিয়া স্থগিত করে এবং অদলবদল বন্ধ হয়ে গেলে প্রক্রিয়া পুনরায় শুরু করে

এটি অদলবদল শুরু হওয়ার আগে প্রক্রিয়াটি স্থগিত করে না, তবে অদলবদল অভিনয়ের আগে 1 সেকেন্ডের জন্য দৌড়তে দেয়।

niceload --mem 1G yourprgঅনুরূপ কাজ করে: 1 জিবি-র কম থাকলে ইউআরপিজি স্থগিত করা হয়। যখন আরও 1 জিবি নিখরচায় থাকে আপনার জিআরপি আবার শুরু হয়।


0

হ্যাঁ. এটি ব্যবহারিকভাবে যে কোনও আধুনিক শেল দিয়ে বেশ সহজেই সম্পন্ন হয়।

sh -c 'ulimit -S -m "$1"
       shift; exec your_command "$@"
' -- some_size args

-lলক মেমরি সীমা জন্য আপনি বিকল্প ব্যবহার করতে পারেন । সীমা ছাড়িয়ে গেলে আপনার প্রক্রিয়াটি সিগন্যাল করা হবে।


-1

ক্যাশে সাফ করার জন্য ক্রোনজজ: লিনাক্সে মেমরি ক্যাশে কীভাবে সাফ করবেন

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

সহজ এবং অলস


হুঁ। আকর্ষণীয় পরামর্শ, যদিও আমি ভয় করি যে আমি বেশিরভাগ সমস্যার মুখোমুখি হয়েছি এটির জন্য কিছুই করে না। আমার মূল সমস্যাটি একক প্রক্রিয়াগুলি (বৈজ্ঞানিক অ্যাপ্লিকেশন) যা দ্রুত অনেক গিগাবাইট মেমরির বরাদ্দ করতে পারে with
বাম দিকের বাইরে

সাফ করার ক্যাচগুলি সাধারণত পারফরম্যান্সের সমস্যার পরিচয় দেয়। খুব মাঝেমধ্যে তারা পারফরম্যান্স সমস্যার সমাধান করে। কিন্তু যখন তারা মেমরিটি সেখানে না থাকে তখন এটি উপলব্ধ হয়ে উঠবে না।
গিলস '23-29
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.