ডিস্ক থেকে / থেকে একক প্রক্রিয়া স্থগিত / পুনরায় শুরু করুন


22

উপলক্ষে, আমরা আমাদের উবুন্টু এবং ওএস এক্স সার্ভারগুলিতে অন্যান্য কাজের জন্য কিছুটা র‌্যাম অস্থায়ীভাবে মুক্ত করতে মেমরি-নিবিড় প্রক্রিয়াগুলি স্থগিত করতে চাই। আমরা যদি সিপিইউ ব্যবহার সম্পর্কে উদ্বিগ্ন হয়ে থাকি তবে একটি সাধারণ Ctrl-Zকাজ করবে work তবে, আমাদের র‌্যামটি (ডিস্কে লিখে লিখে) মুক্ত করতে এবং তারপরে প্রক্রিয়াটি পুনরায় চালু করতে (ডিস্ক -> র‌্যাম) বা অন্য কথায় একটি একক প্রক্রিয়া "হাইবারনেট" করা দরকার। এটি কিভাবে করা যায় সে সম্পর্কে কোনও সূত্র? (সর্বাধিক সিএলআই থেকে।) ধন্যবাদ।


7
আমি অনুমান করি যে কোনও প্রক্রিয়া যখন স্থগিত অবস্থায় থাকে তখন এর ব্যবহৃত স্মৃতিটি প্রয়োজনে ডিস্কে অদলবদলের জন্য প্রার্থী এবং এটি কার্নেল থেকে স্বয়ংক্রিয়ভাবে করা উচিত।
enzotib

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

1
@ ফ্রোজেনবিজয় আমি নিশ্চিত হতে পারি যে এটি ঘটেছিল। কেবলমাত্র যে কারণগুলিতে স্থগিত প্রক্রিয়াটি ধীরে ধীরে মুছে ফেলা হবে না তা হ'ল কারণগুলি যদি এটি অনর্থ্য মেমরির জন্য অনুরোধ করা হয় (বেশ বিরল, এবং (বেশিরভাগই মূলের জন্য সংরক্ষিত)), বা মেমরিটির ম্যাপিং যদি অন্যটির সাথে ভাগ করা হয়, সক্রিয় প্রক্রিয়া ।
গিলস 16:36-

1
একটি শব্দ যা এখানে সহায়তা করতে পারে তা হ'ল "চেকপয়েন্টিং" (হ্যাঁ, একটি কুরুচিপূর্ণ ক্রিয়া-রূপ)। এটি সাধারণত একটি কঠিন সমস্যা কারণ প্রোগ্রামটি এমন কিছু সংস্থান ব্যবহার করছে যা প্রোগ্রামটি ঘুমন্ত অবস্থায় রাষ্ট্র পরিবর্তন করতে পারে। বিগ আয়রন এবং সামান্য ফিডলি কম্পিউটারগুলির মধ্যে একটি পার্থক্য হিসাবে ব্যবহৃত সমস্যাটি পরিচালনা করা।
dmckee

উত্তর:


8

একটি একক প্রক্রিয়া হাইবারনেট করার জন্য কোনও সাধারণ সুবিধা নেই, কেবল পুরো সিস্টেমটি।

তবে, আপনি যদি যত্ন নেন না যে প্রক্রিয়া চিত্রটি পুনরায় বুট থেকে বাঁচবে না, তবে প্রক্রিয়া চিত্রটি ডিস্কে সংরক্ষণের জন্য একটি বিল্ট-ইন সুবিধা রয়েছে: অদলবদল। আপনার কাছে পর্যাপ্ত অদলবদল রয়েছে তা নিশ্চিত করুন, এবং যদি মেমরির চাপ থাকে এবং প্রক্রিয়াটি সক্রিয় না থাকে (উদাহরণস্বরূপ এটি স্থগিত করা হয়েছে) তবে এর স্মৃতিটি অদলবদল হয়ে যাবে।

যদি আপনি জানেন যে প্রক্রিয়াটি দীর্ঘ সময়ের জন্য নিষ্ক্রিয় হওয়ার সম্ভাবনা রয়েছে এবং আপনার কোনও সময়ে দ্রুত প্রতিক্রিয়ার সময় প্রয়োজন হবে, আপনি একটি র‌্যামের প্রচুর পরিমাণ বরাদ্দ করে এখন প্রচুর র‌্যামকে মুক্তি দিতে বাধ্য করতে পারেন can স্বল্প-সময়কালীন প্রক্রিয়া, যেমন

perl -e '$tmp = "a" x 999999999' # allocate about 1GB

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


13

আপনি যে শব্দটির সন্ধান করছেন তা হ'ল " অ্যাপ্লিকেশন চেকপয়েন্টিং "।

যে সরঞ্জামগুলি আমি জানি এটি হ'ল ক্রিওপিড এবং ক্রিওপিআইডি 2

দুটি সরঞ্জামই কেবল লিনাক্সের জন্য।

আমি বিএসডি বা ওএস এক্স এর মতো কোনও সরঞ্জাম জানি না


2
ব্যবহারের জন্য অন্য অ্যাপ্লিকেশনটি হ'ল ডিএমটিসিপি: dmtcp.sourceforge.net
হরিণ হান্টার

5

আপনার কাছে প্রচুর অদলবদল রয়েছে তা নিশ্চিত করুন। আপনার সিস্টেম নিষ্ক্রিয় পৃষ্ঠাগুলি ( vm.swappiness = 100 ) অদলবদল করতে পছন্দ করে তা নিশ্চিত করুন । তারপরে প্রক্রিয়া স্থগিত করার পক্ষে এটি পর্যাপ্ত হওয়া উচিত। কার্নেল নিষ্ক্রিয় পৃষ্ঠাগুলি অদলবদল করতে পছন্দ করবে।


-1

ম্যাক ওএস এক্স-তে আপনি purgeকিছু (নিষ্ক্রিয়) র‌্যাম মুক্ত করতে কমান্ডটি (এক্সকোড সহ সরবরাহ করা) ব্যবহার করার চেষ্টা করতে পারেন ।

vm_stat
purge
vm_stat

2
purgeএখানে সাহায্য করবে না। এটি ডিস্ক ক্যাশে সরিয়ে দেয়, তবে এটি কোনও প্রক্রিয়াটির স্মৃতিশক্তি কেটে যাবে না এবং এটি অন্য কোনও প্রক্রিয়া র‌্যাম পাওয়ার জন্য দ্রুততর করবে না।
গিলস'স'-দুষ্ট হওয়া বন্ধ করুন '
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.