কোনও লিনাক্স প্রক্রিয়া কীভাবে পরবর্তীতে কার্যকর করা যায় তার স্মৃতিশক্তি অদলবদল করে


19

আমি একটি দীর্ঘ চলমান প্রক্রিয়াটি থামাতে চাই যাতে ভবিষ্যতে একই প্রক্রিয়া পুনরায় শুরু করার অভিপ্রায় সাথে এটি কোনও সিপিইউ বা শারীরিক মেমরির সংস্থান গ্রহণ করে না consume

আমি জানি CPU- র অংশ ব্যবহার সাধনযোগ্য SIGSTOPএবং SIGCONT সংকেত কিন্তু এটি পৃষ্ঠা-আউট করা সম্ভব (swap 'র-আউট প্রক্রিয়া মলিন পৃষ্ঠাগুলির ক্ষেত্রে) অবিলম্বে একটি (বন্ধ) প্রক্রিয়া ব্যক্তিগত আরএসএস মেমরির?


1
এর পিছনে উদ্দেশ্য কী? প্রক্রিয়াটি আরও দ্রুত পুনরায় শুরু হয়েছে তা আপনি নিশ্চিত করতে চান? অথবা আপনি সংবেদনশীল ডেটা ডিস্কে লিখিতভাবে রোধ করতে চান? অথবা অন্য কিছু? আমরা যদি উদ্দেশ্যটি জানি তবে আমরা আরও ভাল উত্তর দিতে সক্ষম হতে পারি।
অলিভার

13
ওএস স্বয়ংক্রিয়ভাবে এটি করবে। সুনির্দিষ্ট কিছু করার সত্যিই কোন কারণ নেই।
ডেভিড শোয়ার্জ

@ অলিভার আমি একটি ব্যাচের শিডিয়ুলার তৈরি করছি ( github.com/brutusin/wava )। বর্তমান বাস্তবায়ন অ-প্রাক-পূর্বসূচি নির্ধারণ করে তবে আমি চলমান চাকরি সারিবদ্ধ কাজের উপর নির্ভরশীল যখন কিছু অচলাবস্থার পরিস্থিতি এড়াতে কৃপণভাবে একটি প্রিম্পিটিভের (কাজ চালানো বন্ধ করতে সক্ষম হওয়া) যেতে চাই। আমার ঠিক অনুরোধ করা আচরণের দরকার, থামানো প্রক্রিয়াগুলি চালিয়ে যাওয়া (চেকপয়েন্ট থেকে নতুন তৈরি না করা)
idelvall

1
@ ডেভিডশওয়ার্টজ এটি একটি ঝুঁকিপূর্ণ দাবি
idelvall

@idelvall তারপরে মনে হচ্ছে আপনি স্মৃতিতে বিশেষ কিছু করতে চান না।
ডেভিড শোয়ার্জ

উত্তর:


11

আপনি চেকপয়েন্ট / পুনরুদ্ধার নামক কোনও কৌশলটি সন্ধান করতে পারেন। এটি আপনাকে একটি চলমান প্রক্রিয়া গ্রহণ করতে এবং ফাইলের সেটগুলিতে তার রাজ্যটি সংরক্ষণ করার অনুমতি দেয়, তারপরে এটি পরে পুনরুদ্ধার করে।
এটি ব্যবহার করতে, ক্রু [ গিট , উইকি ] প্রোগ্রাম ( yum install criuবা apt install criu) ইনস্টল করে শুরু করুন ।

একটি চলমান প্রক্রিয়া চেকপয়েন্টে, এর ফাইলগুলি ধরে রাখতে একটি খালি ডিরেক্টরি তৈরি করুন এবং সেই ডিরেক্টরিতে সিডি করুন।

mkdir /var/tmp/checkpoint
cd /var/tmp/checkpoint

এখন চলমান প্রক্রিয়া চেকপয়েন্ট। এক্ষেত্রে আমি - শেল-জবটি ব্যবহার করছি যেহেতু আমার প্রসেসটি কোনও সম্পর্কিত টিটির সাথে শেলের সাথে চলছে।

criu dump -t 404 --shell-job

404 হ'ল প্রক্রিয়াটির চেকপয়েন্টটি আমি চাই the আমি যখন এটি করি তখন দেখি আমার চলমান প্রক্রিয়াটি নিহত হয় এবং আমার / var / tmp / চেকপয়েন্ট ডিরেক্টরিটি পুনরুদ্ধার করার জন্য প্রয়োজনীয় ফাইলগুলির সেট দিয়ে পপুলেশন হয়।

প্রক্রিয়াটি পুনরুদ্ধার করতে, আমি নিশ্চিত হয়েছি যে আমি চেকপয়েন্ট ফাইলগুলির সাথে ডিরেক্টরিতে আছি এবং একটি পুনরুদ্ধার করব।

cd /var/tmp/checkpoint
criu restore --shell-job

টার্মিনালে যেখানে এটি চালানো হয়েছিল সেখানে প্রক্রিয়াটি উঠে যাবে। যদি আমি এই চলমান প্রক্রিয়াটিকে মেরে ফেলি এবং criu restore --shell-jobআবার চালনা করি , প্রক্রিয়াটি আবার চেকপয়েন্টে ফিরে যাবে এবং আবার শুরু হবে।

আশাকরি এটা সাহায্য করবে.


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

হি, গুড পয়েন্ট @ ডেভিড, বিশেষত যদি টিএমপিএফ /tmpহয় (মেমরি / অদলবদল দ্বারা সমর্থিত)। আপনি যদি কোনও সাধারণ ডিস্ক-ব্যাকযুক্ত ফাইল সিস্টেমে চেকপয়েন্ট করেন vmtouch -eতবে পৃষ্ঠাগুলি ক্যাশ থেকে পৃষ্ঠাগুলি উচ্ছেদের জন্য ব্যবহার করতে পারেন তবে এটি অস্থায়ীভাবে অতিরিক্ত র‍্যাম ব্যবহার করে। (যদি criuনা সরাসরি আই / ও (O_DIRECT সহ) করার অপশন না থাকে ...)
পিটার

1
ওপি এটি চায় কি না তা জানা শক্ত, কারণ ওপি কোন সমস্যা সমাধানের চেষ্টা করছে তার ব্যাখ্যা দেওয়ার চেয়ে একটি নির্দিষ্ট সমাধান চেয়েছে। এটি সঠিক উত্তর হতে পারে বা এটি তাঁর পক্ষে অকেজো হতে পারে, আমরা তা বলতে পারি না।
ডেভিড শোয়ার্জ

আমি এখনও এটিকে বিস্তারিতভাবে দেখিনি তবে, মনে হচ্ছে পুনরুদ্ধার করা প্রক্রিয়াটি একটি নতুন প্রক্রিয়া (বিভিন্ন পিআইডি), এবং এটি আমার প্রয়োজন ঠিক তা নয় ...
idelvall

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