লোভী অ্যাপ্লিকেশনগুলির জন্য মেমরি সীমাবদ্ধ সমাধান যা ওএস ক্র্যাশ করতে পারে?


32

আমি আমার কম্পিউটারটি বৈজ্ঞানিক প্রোগ্রামিংয়ের জন্য ব্যবহার করি। 8GBএটিতে স্বাস্থ্যকর র‌্যাম এবং 12GBঅদলবদল রয়েছে। প্রায়শই, আমার সমস্যাগুলি আরও বাড়ার সাথে সাথে আমি উপলব্ধ সমস্ত র‍্যামের চেয়ে বেশি exceed ক্রাশ হওয়ার পরিবর্তে (যা পছন্দসই হবে), মনে হচ্ছে উবুন্টু Unক্য এবং যে কোনও উন্মুক্ত টার্মিনাল সহ সমস্ত কিছুকে অদলবদল করে লোড করা শুরু করে। যদি আমি সময়মতো রান-আউট প্রোগ্রামটি না ধরে থাকি তবে অপেক্ষা করার বাইরে আমি কিছুই করতে পারি না - একটি কমান্ড প্রম্পটে যেমন স্যুইচ করতে 4-5 মিনিট সময় লাগে। Ctrl-Alt-F2যেখানে আমি আপত্তিজনক প্রক্রিয়াটি হত্যা করতে পারি।

যেহেতু আমার নিজের মূর্খতা এই ফোরামের আওতার বাইরে, আমি যখন কোনও একক আপত্তিজনক প্রোগ্রাম থেকে সমস্ত উপলব্ধ মেমরি ব্যবহার করি তখন কীভাবে আমি উবুন্টুকে আঘাতের মাধ্যমে ক্রাশ হওয়া থেকে আটকাতে পারি?

ঘরে বসে পরীক্ষা *!

একটি টার্মিনাল খুলুন, আরম্ভ করুন pythonএবং আপনি numpyইনস্টল করা থাকলে এটি ব্যবহার করে দেখুন:

>>> import numpy
>>> [numpy.zeros((10**4, 10**4)) for _ in xrange(50)]

* সতর্কতা: বিরূপ প্রভাব ফেলতে পারে , প্রক্রিয়াটি সময়মতো পর্যবেক্ষণ করতে পারে iotopবা topসময়মতো হত্যা করতে পারে। যদি তা না হয় তবে আমি আপনাকে পুনরায় বুট করার পরে দেখতে পাব।

উত্তর:


21

অন্তর্নির্মিত শেল ulimitআপনাকে সংস্থানগুলি সীমাবদ্ধ করতে দেয়। আপনার ক্ষেত্রে, শেলের (এবং এর শিশুদের) মেমরির ব্যবহার সীমিত করতে, ব্যবহার করুন ulimit -v

100 এমবি (100000 কেবি) মেমরির সীমা নির্ধারণ করে বিক্ষোভ:

$ ulimit -v
unlimited
$ python -c '[ "x" * 100000000 ]'
$ ulimit -v 100000
$ python -c '[ "x" * 100000000 ]'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
MemoryError

এটি ps uww -C script-name-hereঅজগরটি ব্যবহার করে পর্যবেক্ষণ করা হয়েছে যে কমপক্ষে 29MB মেমরি (ভিএসজেড কলাম) প্রয়োজন। আরএসএস সীমা বৃদ্ধি পাওয়ায় আপনার অজগর স্ক্রিপ্টটির আরও মেমরি দরকার তাই সেই কলামটি মানিয়ে নিন।


1
খুব খারাপ আমরা আসল অ্যাপটি দেখতে কেমন তা আমরা জানি না। প্রদর্শিত হিসাবে উলিমিট সেই সমস্ত প্রক্রিয়াটিকে প্রভাবিত করে যারা এই শেলের শিশু। এটি ডেমন হিসাবে চলতে পারে কিনা তা আমরা জানি না বা এর প্রচুর বাচ্চা রয়েছে যা জিনিসগুলিকে আরও জটিল করে তুলবে। দেখুন coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/...
ppetraki

1
আছে কি কোনো ব্যবহারকারী বান্ধব ফ্রন্ট-এন্ড ulimit এবং জন্য Cgroups ? উইন্ডোজে, যখন ওএস র‍্যাম শেষ হয়ে না যেতে পারে, তখন একটি সতর্কতা পপ-আপ সর্বদা আমাকে সিস্টেম হিমায়িত এড়াতে সক্ষম করে তুলেছে। উবুন্টুতে, আমাকে কি সর্বদা স্মৃতি ব্যবহারের দিকে নজর রাখতে হবে?
ড্যান ড্যাসক্লেস্কু

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

12

সিগ্রুপগুলি আপনাকে প্রতিটি প্রক্রিয়া ভিত্তিতে আপনার মেমরির ব্যবহার সীমিত করতে দেয়।

https://en.wikipedia.org/wiki/Cgroups

http://www.mjmwired.net/kernel/Documentation/cgroups/memory.txt

বৈজ্ঞানিক কম্পিউটিং কুখ্যাত মেমরি নিবিড়, আপনার অ্যাপ্লিকেশনটিকে একটি গ্রুপে স্যান্ডবক্স করে, বাকী প্রক্রিয়াগুলির শিকার হওয়া উচিত নয় কারণ মেমরির চাপটি হ্রাস পাবে।

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

সিদ্ধান্তের সিদ্ধান্তসমূহ :) শুভকামনা!


1
ইউলিমিট এবং সিগ্রুপগুলির জন্য কোনও ব্যবহারকারী-বান্ধব ফ্রন্ট-এন্ড নেই? উইন্ডোজে, যখন ওএস র‍্যাম শেষ হয়ে না যেতে পারে, তখন একটি সতর্কতা পপ-আপ সর্বদা আমাকে সিস্টেম হিমায়িত এড়াতে সক্ষম করে তুলেছে। উবুন্টুতে, আমাকে কি সর্বদা স্মৃতি ব্যবহারের দিকে নজর রাখতে হবে?
ড্যান ড্যাসক্লেস্কু

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

8
আমি জানি মেমরিটি কী গ্রাস করে - ক্রোম। তবে ওএসের তত্ক্ষণাত অ্যামোক চলমান অ্যাপ্লিকেশনগুলির বিরুদ্ধে তার স্থায়িত্ব রক্ষা করা উচিত।
ড্যান ড্যাসক্লেস্কু

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