হুম, আমি ওভার কমিট এবং ওওএম হত্যাকারীর পক্ষে যুক্তি দ্বারা সম্পূর্ণরূপে বিশ্বাসী নই ... যখন দোলাচল লেখেন,
"যদি আপনি আপনার সিস্টেমটি ওভারলোড করে থাকেন তবে ওওএম হত্যাকারী কেবলই ধ্বংসস্তূপ ডেকে আনে it এটি পর্যাপ্ত পরিমাণে সোয়াপ দিন এবং এমন অ্যাপ্লিকেশনগুলি চালান না যা হঠাৎ করে প্রচুর পরিমাণে র্যাম খাওয়ার সিদ্ধান্ত নেয় এবং আপনার কোনও সমস্যা হবে না।"
তিনি এমন পরিবেশের পরিস্থিতি বর্ণনা করার বিষয়ে যেখানে ওভারকমিট এবং ওওএম ঘাতক প্রয়োগ করা হয় না, বা 'সত্যই' কাজ করেন না (যদি সমস্ত অ্যাপ্লিকেশন প্রয়োজন অনুসারে মেমরি বরাদ্দ করে, এবং বরাদ্দ করার জন্য পর্যাপ্ত ভার্চুয়াল মেমরি থাকে, মেমোরি রাইটগুলি নিবিড়ভাবে মেমরি বরাদ্দ অনুসরণ করবে ত্রুটিগুলি, সুতরাং একটি ওভার কমিট কৌশলটি সক্ষম করা থাকলেও আমরা সত্যিই একটি ওভার কমিট সিস্টেম সম্পর্কে কথা বলতে পারি না)। এটি একটি অন্তর্নিহিত ভর্তির বিষয়ে যে ওভারকমিট এবং ওওএম হত্যাকারী সবচেয়ে ভাল কাজ করে যখন তাদের হস্তক্ষেপের প্রয়োজন হয় না, যা এই কৌশলটির বেশিরভাগ সমর্থকদের দ্বারা ভাগ করা হয়, যতদূর আমি বলতে পারি (এবং আমি স্বীকার করি যে আমি বেশি কিছু বলতে পারি না))। মোরোভার, মেমোরিটিকে পূর্বনির্ধারণ করার সময় নির্দিষ্ট আচরণগুলির সাথে অ্যাপ্লিকেশনগুলিকে উল্লেখ করে আমার মনে হয় যে ডিফল্ট হওয়ার পরিবর্তে কোনও নির্দিষ্ট হ্যান্ডলিং বিতরণ স্তরে সুর করা যেতে পারে,
জেভিএম উদ্বেগের জন্য, ভাল, এটি একটি ভার্চুয়াল মেশিন, কিছুটা হলেও এটির শুরুতে প্রয়োজনীয় সমস্ত সংস্থান বরাদ্দ করা দরকার , যাতে এটি তার অ্যাপ্লিকেশনগুলির জন্য তার 'নকল' পরিবেশ তৈরি করতে পারে এবং তার উপলব্ধ উত্সটিকে হোস্ট থেকে পৃথক রাখতে পারে পরিবেশ, যতদূর সম্ভব। সুতরাং, এটি 'বাহ্যিক' ওওএম শর্তের ফলে (ওভারকমিট / ওওএম হত্যাকারী / যে কোনও কারণে ঘটে) বা তারপরে যে কোনও অবস্থাতেই হস্তক্ষেপের কারণে ক্ষতিগ্রস্থ হওয়ায় এর ফলে কিছুটা সময় বাদে এটি প্রারম্ভকালে ব্যর্থ হওয়া বাঞ্ছনীয় might অভ্যন্তরীণ ওওএম হ্যান্ডলিং কৌশলগুলি (সাধারণভাবে, কোনও ভিএম শুরু থেকে প্রয়োজনীয় প্রয়োজনীয় সংস্থান অর্জন করতে পারে এবং হোস্ট সিস্টেমকে শেষ অবধি এগুলি 'উপেক্ষা' করা উচিত, গ্রাফিক্স কার্ডের সাথে ভাগ করা কোনও পরিমাণ শারীরিক রাম কখনই হয় না - এবং হতে পারে না) - ওএস দ্বারা স্পর্শ)।
অ্যাপাচি সম্পর্কে আমি সন্দেহ করি যে পুরো সার্ভারটি মাঝেমধ্যে নিহত এবং পুনরায় চালু করা একক সংযোগের সাথে একটি শিশুকে তার (= সন্তানের / সংযোগের) শুরু থেকে ব্যর্থ হওয়ার চেয়ে ভাল (যেন এটি সম্পূর্ণ নতুন উদাহরণ হিসাবে দেখা যায়) জেভিএম তৈরি করা অন্য উদাহরণটি কিছুক্ষণ চালানোর পরে)। আমার ধারণা, সেরা 'সমাধান' কোনও নির্দিষ্ট প্রসঙ্গে নির্ভর করবে। উদাহরণস্বরূপ, একটি ই-বাণিজ্য পরিষেবা বিবেচনা করে, কখনও কখনও শপিং চার্টের কয়েকটি সংযোগ পুরো পরিষেবাটি ছাড়ার পরিবর্তে এলোমেলোভাবে ব্যর্থ হয়ে ঝুঁকির সাথে, উদাহরণস্বরূপ, একটি চলমান অর্ডার চূড়ান্তকরণে বাধা সৃষ্টি করতে বা (আরও খারাপ) অর্থ প্রদানের প্রক্রিয়া, কেস এর সমস্ত পরিণতি সহ (সম্ভবত নিরীহ, তবে সম্ভবত ক্ষতিকারক - এবং সমস্যাটি দেখা দিলে,
একইভাবে, ওয়ার্কস্টেশনে এমন প্রক্রিয়া যা সর্বাধিক সংস্থান গ্রহণ করে এবং তাই ওওএম হত্যাকারীর পক্ষে প্রথম পছন্দ হতে পারে, এটি কোনও ভিডিও ট্রান্সকোডার, বা একটি রেন্ডারিং সফ্টওয়্যার, সম্ভবত একমাত্র অ্যাপ্লিকেশন হতে পারে ব্যবহারকারী অচ্ছুত হতে চায়। এই বিবেচনাগুলি আমাকে ইঙ্গিত দেয় যে ওওএম কিলার ডিফল্ট নীতিটি খুব আক্রমণাত্মক। এটি একটি "সবচেয়ে খারাপ ফিট" পদ্ধতির ব্যবহার করে যা কোনও কোনওরকম কিছু ফাইল সিস্টেমের মতোই (ওমকে চেষ্টা করে এবং যতটা সম্ভব মেমরি মুক্ত করতে পারে, নিহত সময়ে সাব-প্রসেসিসের সংখ্যা হ্রাস করার জন্য, অল্প সময়ের মধ্যে আরও কোনও হস্তক্ষেপ রোধ করার জন্য, পাশাপাশি একটি fs আরও বেশি ডিস্ক স্পেস বরাদ্দ করতে পারে তবে একটি নির্দিষ্ট ফাইলের জন্য প্রকৃতপক্ষে প্রয়োজন হয়, যদি ফাইলটি বৃদ্ধি পায় এবং এইভাবে কিছুটা হলেও খণ্ডন রোধ করতে পারে তবে আরও কিছু বরাদ্দ রোধ করতে পারে)।
তবে আমি মনে করি যে একটি 'সর্বোত্তম ফিট' পদ্ধতির মতো একটি বিপরীত নীতিই অগ্রাধিকারযোগ্য হতে পারে, তাই নির্দিষ্ট পর্যায়ে সঠিক মেমরির প্রয়োজন মুক্ত করতে এবং 'বড়' প্রক্রিয়াগুলির সাথে বিরক্ত না করা, যা ভাল নষ্ট হতে পারে মেমরি, তবে এটিও নাও হতে পারে এবং কার্নেলটি এটি জানতে পারে না (এইচএমএম, আমি কল্পনা করতে পারি যে পৃষ্ঠার অ্যাক্সেসগুলি গণনা এবং সময় চিহ্নিত করতে পারে যদি কোনও প্রক্রিয়া মেমরি বরাদ্দ করে থাকে তবে এটির কোনও প্রক্রিয়া প্রয়োজন কিনা তা অনুমান করার জন্য মেমোরি নষ্ট করছে বা কেবল প্রচুর ব্যবহার করছে, তবে মেমরি এবং সিপিইউ নিবিড় অ্যাপ্লিকেশন থেকে নষ্ট হওয়া স্মৃতিকে আলাদা করার জন্য অ্যাক্সেস বিলম্বগুলি সিপিইউ চক্রের উপরে ওজন করা উচিত , তবে, সম্ভাব্যভাবে সঠিক না হলেও, এই ধরনের একটি হিউরিস্টিকের অত্যধিক ওভারহেড থাকতে পারে)।
তদুপরি, এটি সত্য নাও হতে পারে যে খুব কম সম্ভাব্য প্রক্রিয়া হত্যার পক্ষে সর্বদা একটি উত্তম পছন্দ। উদাহরণস্বরূপ, একটি ডেস্কটপ পরিবেশে (আসুন একটি নেটটপ বা সীমিত সংস্থান সহ একটি নেটবুকের কথা ভাবেন, নমুনার জন্য) কোনও ব্যবহারকারী হয়ত বেশ কয়েকটি ট্যাব সহ একটি ব্রাউজার চালাচ্ছেন (এইভাবে, স্মৃতিশক্তি গ্রহণ করছে - ধরে নেওয়া যাক এটি ওমকের প্রথম পছন্দ হিসাবে বেছে নেওয়া হয়েছে) , এবং আরও কয়েকটি অ্যাপ্লিকেশন (অ সংরক্ষিত ডেটা সহ একটি ওয়ার্ড প্রসেসর, একটি মেল ক্লায়েন্ট, একটি পিডিএফ পাঠক, একটি মিডিয়া প্লেয়ার, ...), আরও কয়েকটি (সিস্টেম) ডিমন, আরও কয়েকটি ফাইল ম্যানেজার উদাহরণ রয়েছে। এখন, একটি ওওএম ত্রুটি ঘটেছে, এবং ওমকে ব্রাউজারটিকে হত্যা করতে বেছে নিয়েছে যখন ব্যবহারকারী নেট থেকে 'গুরুত্বপূর্ণ' বলে কিছু মনে করছেন ... ব্যবহারকারী হতাশ হবেন। অন্যদিকে, কয়েক ফাইল ম্যানেজার বন্ধ করা হচ্ছে '
যাইহোক, আমি মনে করি যে ব্যবহারকারীকে কী করবেন তার নিজের সিদ্ধান্ত নিতে সক্ষম করা উচিত। একটি ডেস্কটপ (= ইন্টারেক্টিভ) সিস্টেমে এটি করা তুলনামূলকভাবে সহজ হওয়া উচিত, তবে ব্যবহারকারীরা যে কোনও অ্যাপ্লিকেশন বন্ধ করতে বলার জন্য যথেষ্ট সংস্থান সংরক্ষিত থাকে (তবে কয়েকটি ট্যাব বন্ধ করাও যথেষ্ট হতে পারে) এবং তার পছন্দটিকে পরিচালনা করতে পারে (একটি বিকল্প হতে পারে অতিরিক্ত স্থান অদলবদল করে, যদি পর্যাপ্ত জায়গা থাকে) তৈরি করে। পরিষেবাদির জন্য (এবং সাধারণভাবে), আমি আরও দুটি সম্ভাব্য বর্ধনগুলি বিবেচনা করব: একটি OOM হত্যাকারী হস্তক্ষেপ লগ করা হয়, পাশাপাশি ব্যর্থতাগুলি সহজেই ডিবাগ করা যায় এমন পদ্ধতিতে ব্যর্থতা শুরু / কাঁটাচামচ করা প্রক্রিয়াগুলি (উদাহরণস্বরূপ, একটি API এ পারে নতুন প্রক্রিয়া তৈরি বা জালিয়াতি প্রদান প্রক্রিয়াটি অবহিত করুন - সুতরাং, অ্যাপাচি-এর মতো একটি সার্ভার, সঠিক প্যাচ সহ, কিছু ত্রুটির জন্য আরও ভাল লগিং সরবরাহ করতে পারে); ওভারকমিট / ওমকে প্রচেষ্টায় থাকাকালীন থেকে এটি নির্বিঘ্নে করা যেতে পারে; দ্বিতীয় স্থানে, তবে গুরুত্বের জন্য নয়, ওমকে অ্যালগরিদমকে সূক্ষ্ম করে তোলার জন্য একটি প্রক্রিয়া প্রতিষ্ঠা করা যেতে পারে - আমি জানি যে প্রক্রিয়া ভিত্তিতে কোনও প্রক্রিয়া সম্পর্কে একটি নির্দিষ্ট নীতি নির্ধারণ করা সম্ভব, তবে আমি লক্ষ্য রাখতে চাই প্রাসঙ্গিক প্রক্রিয়াগুলি চিহ্নিত করতে এবং তাদেরকে নির্দিষ্ট পরিমাণের গুরুত্ব (তালিকাভুক্ত বৈশিষ্ট্য অনুসারে) দেওয়ার জন্য অ্যাপ্লিকেশন নামের (বা আইডি) এক বা একাধিক তালিকার উপর ভিত্তি করে 'কেন্দ্রীভূত' কনফিগারেশন প্রক্রিয়া; এই জাতীয় প্রক্রিয়াটিও (বা কমপক্ষে পারে) স্তরযুক্ত হওয়া উচিত, যাতে শীর্ষ স্তরের ব্যবহারকারী-সংজ্ঞায়িত তালিকা, সিস্টেম- (বিতরণ) সংজ্ঞায়িত তালিকা এবং (নীচের স্তরের) অ্যাপ্লিকেশন-সংজ্ঞায়িত এন্ট্রি থাকতে পারে উদাহরণস্বরূপ, কোনও ডি ফাইল ম্যানেজার OOMK কে নিরাপদে কোনও ঘটনা হত্যার নির্দেশ দিতে পারে,
মরওভার, রান-সময়ে অ্যাপ্লিকেশনগুলিকে তাদের 'গুরুত্ব' স্তর বাড়াতে বা কমিয়ে আনার অনুমতি দেওয়ার জন্য একটি এপিআই সরবরাহ করা যেতে পারে (মেমরি পরিচালনার উদ্দেশ্যে এবং নির্ধারিত নির্বাহের অগ্রাধিকারের সাথে), যাতে উদাহরণস্বরূপ, একটি ওয়ার্ড প্রসেসর শুরু হতে পারে একটি নিম্ন 'গুরুত্ব' তবে এটি উত্থাপন করুন কারণ কোনও ফাইলটিতে ফ্লাশ করার আগে কিছু তথ্য ধরে রাখা হয়, বা একটি রাইটিং অপারেশন করা হচ্ছে, এবং কম গুরুত্ব আবারও যখন এই ধরণের অপারেশন শেষ হয় (সমানভাবে, কোনও ফাইল ম্যানেজার স্তরটি পরিবর্তন করতে পারে যখন এটি ঠিক থেকে চলে যায়) ডেটা এবং বিপরীতে মোকাবেলা করার জন্য ফাইল লিখন, পৃথক প্রক্রিয়াগুলি ব্যবহার না করে এবং অ্যাপাচি বিভিন্ন বাচ্চাদের বিভিন্ন স্তরের গুরুত্ব দিতে পারে, বা সিসাদমিন দ্বারা সিদ্ধান্ত নেওয়া এবং অ্যাপাচি-এর মাধ্যমে বা অন্য কোনও সার্ভারের মাধ্যমে উন্মুক্ত কিছু নীতি অনুসারে একটি শিশু রাষ্ট্র পরিবর্তন করতে পারে - সেটিংস). অবশ্যই, যেমন একটি এপিআই হতে পারে এবং অপব্যবহার / অপব্যবহার করা যেতে পারে, তবে আমি মনে করি যে সিস্টেমে কী চলছে (এবং মেমোরি খরচ / সৃষ্টির সময় বা একই রকমের ক্ষেত্র) সম্পর্কিত কোনও প্রাসঙ্গিক তথ্য ছাড়াই কার্নেল নির্বিচারে মেমরি মুক্ত করার প্রক্রিয়াটির তুলনায় এটি একটি সামান্য উদ্বেগ 'আমার পক্ষে যথেষ্ট প্রাসঙ্গিক বা' বৈধকরণ 'নয় - কেবলমাত্র ব্যবহারকারী, প্রশাসক এবং প্রোগ্রাম লেখকরা কোনও কারণে কোনও প্রক্রিয়াটি' এখনও প্রয়োজন 'কিনা, কারণ কী, এবং / অথবা যদি অ্যাপ্লিকেশনটি রাষ্ট্রের নেতৃত্বাধীন হয় তবে তা সত্যই নির্ধারণ করতে পারে ডেটা ক্ষতি বা অন্যান্য ক্ষতি / ঝামেলা যদি নিহত হয়; যাইহোক, কিছু অনুমান করা যায়নি, উদাহরণস্বরূপ কোনও প্রক্রিয়া দ্বারা অর্জিত নির্দিষ্ট ধরণের (ফাইল বর্ণনাকারী, নেটওয়ার্ক সকেট, ইত্যাদি) সংস্থানগুলি অনুসন্ধান করা এবং অপেক্ষমান ক্রিয়াকলাপগুলি বলতে পারে যে কোনও প্রক্রিয়া উচ্চতর 'অবস্থায়' থাকা উচিত কিনা? এক সেট,
অথবা, মাত্রাতিরিক্ত কমিটিকে এড়িয়ে চলুন এবং কার্নেলকে কর্নেল যা করতে হবে ঠিক তা করতে দিন, সংস্থানগুলি বরাদ্দ করুন (তবে ওওএম হত্যাকারীর মতো নির্বিচারে তাদের উদ্ধার করবেন না), সময় নির্ধারণের প্রক্রিয়া, অনাহার এবং অচলাবস্থা রোধ করে (বা তাদের থেকে উদ্ধার), সম্পূর্ণ প্রিমিপশন নিশ্চিত করে এবং মেমরি স্পেস পৃথককরণ, এবং আরও ...
আমি ওভারকমিট পদ্ধতির বিষয়ে আরও কিছু শব্দ ব্যয় করব। অন্যান্য আলোচনা থেকে আমি ধারণাটি তৈরি করেছি যে ওভার কমিট সম্পর্কে অন্যতম প্রধান উদ্বেগ (এটি চাওয়ার কারণ হিসাবে এবং সম্ভাব্য সমস্যার উত্স হিসাবে উভয়) কাঁটাচামচ নিয়ে গঠিত: সত্যি বলতে কী, আমি ঠিক জানি না যে অনুলিপি- অন-রাইটিং কৌশলটি কার্যকর করা হয়েছে, তবে আমি মনে করি যে কোনও আক্রমণাত্মক (বা আশাবাদী) নীতিটি অদলবদলযুক্ত স্থানীয়তা কৌশল দ্বারা প্রশমিত হতে পারে। এটি হ'ল, একটি কাঁটাচামচ প্রক্রিয়া কোড পৃষ্ঠা এবং সময়সূচী কাঠামোগুলি ক্লোনিং (এবং সামঞ্জস্য করার) পরিবর্তে প্রকৃত লেখার আগে আরও কয়েকটি তথ্য পৃষ্ঠাগুলি অনুলিপি করা যেতে পারে, সেই পৃষ্ঠাগুলির মধ্যে প্যারেন্ট প্রসেসটি আরও ঘন ঘন লেখার জন্য অ্যাক্সেস করেছে (এটি, লেখার ক্রিয়াকলাপের জন্য একটি কাউন্টার ব্যবহার করে)।
অবশ্যই, আইএমএইচও।