পুনরায় বুটের পরে ধারাবাহিকতার জন্য পুরো প্রক্রিয়াটি সংরক্ষণ করুন


54

আমি গণিতে মোটামুটি শক্ত সমস্যার জন্য একটি অ্যালগরিদম তৈরি করেছি যার শেষ হতে বেশ কয়েক মাস প্রয়োজন হতে পারে। কেবলমাত্র আমার সীমিত সংস্থান রয়েছে তাই আমি আমার উবুন্টু 12.04 (x86) ল্যাপটপে এটি শুরু করেছি। এখন আমি কিছু আপডেট ইনস্টল করতে চাই এবং ল্যাপটপটি পুনরায় চালু করতে চাই ("দয়া করে রিবুট করুন" বার্তাটি কেবল বিরক্তিকর)।

একটি রিবুট ছাড়িয়েও ধারাবাহিকতার জন্য বরাদ্দ হওয়া মেমরি সহ একটি সম্পূর্ণ প্রক্রিয়া সংরক্ষণ করার কোনও উপায় আছে?

আপনার যে প্রক্রিয়াটির প্রয়োজন হতে পারে সে সম্পর্কে এখানে কিছু তথ্য রয়েছে। প্রয়োজনে আরও তথ্য জিজ্ঞাসা করুন নির্দ্বিধায়।

  • আমি " ./binary > ./somefile &" বা "সময়। / বাইনারি>। / সোসাইফাইল &" কমান্ড সহ একটি টার্মিনালে প্রক্রিয়াটি কল করেছি, আমি সত্যিই মনে করতে পারি না।
  • এটি স্ট্যান্ড :: সেরারে কিছু ডিবাগ তথ্য মুদ্রণ করছে (খুব বেশি সময় নয়)।
  • এটি বর্তমানে প্রায় 600.0 কিবি ব্যবহার করছে এবং যদিও এটি বৃদ্ধি পাবে, এটি দ্রুত বাড়ার সম্ভাবনা নেই।
  • প্রক্রিয়াটি সাধারণ অগ্রাধিকার দিয়ে চলে
  • কার্নেলটি 3.2.0-26-জেনেরিক-পা, সিপিইউ একটি এএমডি, অপারেটিং সিস্টেমটি উবুন্টু 12.04 x86।
  • এটি 9 দিন এবং 14 ঘন্টা থেকে চলে (এটি বাতিল করতে এত দীর্ঘ ;-))

3
কৌতূহলের বাইরে আপনি কী হিসাব করছেন?
ভিক্টর মেলগ্রেন

3
@ ব্যবহারকারী 1261166: আমি শাখা-ও-কাট পদ্ধতির সাথে টার্গেট ভিজিটেশন সমস্যা (যা ট্র্যাভেলিং সেলসম্যান সমস্যার একটি এক্সটেনশন) অধ্যয়ন করি। এইভাবে আমাকে কিছু বিশেষ উচ্চ-মাত্রিক পলিটোপের যতগুলি সম্ভব সম্ভাবনা রয়েছে know মূলত, এটি একটি বিশাল সমস্যাটিকে একটি বিশাল সমস্যাটিকে ফুটিয়ে তুলছে এবং এরপরে এটি হ্রাস করার জন্য কিছুটা সমাধান করার চেষ্টা করছে।
স্টেফান

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

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

উত্তর:


41

প্রক্রিয়াটি পুনরুদ্ধার করার জন্য সবচেয়ে ভাল / সরল সমাধান হ'ল আপনার প্রোগ্রামটি পরিবর্তন করে কোনও ফাইলের মধ্যে রাষ্ট্রকে সংরক্ষণ করতে পুনরায় ব্যবহার করুন file

অ্যাপ্লিকেশন স্ন্যাপশট সম্পর্কে উইকিপিডিয়া পৃষ্ঠার ভিত্তিতে একাধিক বিকল্প রয়েছে:

  1. রয়েছে cryopid কিন্তু এটি unmaintained মনে করা হয়।
  2. লিনাক্স চেকপয়েন্ট / পুনঃসূচনাটি একটি ভাল পছন্দ বলে মনে হচ্ছে তবে আপনার কার্নেলটি CONFIG_CHECKPOINT_RESTOREসক্ষম করা দরকার।
  3. ক্রু সম্ভবত সম্ভবত সর্বশেষতম প্রকল্প এবং সম্ভবত আপনার সেরা শট তবে কিছু নির্দিষ্ট কার্নেল বিকল্পের উপরও নির্ভর করে যা আপনার বিতরণ সম্ভবত সেট করে নি।

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

ভবিষ্যতের জন্য আপনি কোথায় আপনার দীর্ঘ-চলমান প্রক্রিয়াগুলি চালাবেন, কীভাবে সেগুলিকে প্যারালাইজ করবেন এবং কীভাবে সমস্যাগুলি পরিচালনা করবেন, যেমন সম্পূর্ণ ডিস্কগুলি, প্রক্রিয়াটি মারা যায় ইত্যাদি সম্পর্কে ভাবুন think


20

এটি করার একটি মোটামুটি "সস্তা" উপায় হ'ল ভিএম-তে প্রসেসিং করা (উদাহরণস্বরূপ, ভার্চুয়ালবক্স সহ)। আপনি শাট ডাউন করার আগে ভিএম স্থগিত করুন এবং রাষ্ট্রটি সংরক্ষণ করুন। বুট করার পরে ভিএম ও স্থিতি পুনরুদ্ধার করুন।

এটি হত্যার প্রয়োজন হয় এবং কাজটি আবার শুরু করার অসুবিধা হয়। তবে এটি যদি বেশ কয়েক মাস ধরে চলতে থাকে তবে নয় দিনের পার্থক্য তুচ্ছ হয়ে যায় (6 মাসেরও বেশি 5% বৃদ্ধি)।


সম্পাদনা: আমি ঠিক বুঝতে পেরেছি যে উলরিচ ইতিমধ্যে তার তালিকায় নাম্বারহীন আইটেম 4 এ এটি উল্লেখ করেছে।

আমি আপনাকে এটিকে বিকল্প হিসাবে বিবেচনা করতে উত্সাহিত করব, বিশেষত যেহেতু বিকল্পগুলির কোনওোটাই শক্ত সমাধানের মতো মনে হচ্ছে না। এটির কাজ না করার কারণগুলির প্রত্যেকটির একটি কারণ রয়েছে।

আমি মনে করি সবচেয়ে ভাল কাজটি হ'ল তাদের মধ্যে একটির চেষ্টা করা এবং যদি এটি কাজ না করে তবে কোনও ভিএম-তে কাজটি পুনরায় চালু করুন।


15

টুল একটি উঁকি নিতে CryoPID

হোম পৃষ্ঠা থেকে: "ক্রিওপিআইডি আপনাকে লিনাক্সে চলমান প্রক্রিয়ার অবস্থা ক্যাপচার করতে এবং একটি ফাইলে এটি সংরক্ষণ করার অনুমতি দেয় This


4
একটি লিনাক্স বাক্সে চলমান অজগর স্ক্রিপ্টের অবস্থা সংরক্ষণ করতে এটি ব্যবহার করে এটি একটি ফ্রিবিএসডি বাক্সে স্থানান্তরিত করে সেখানে আবার চালু করা হয়েছিল। কিছু তীরচিহ্ন যাদু সেখানে চলছে;)
টিম

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

কেউ কি সম্প্রতি চেষ্টা করেছে? সাইটটি চলে গেছে, আমি একটি .deb খুঁজে পাই না, উত্স ব্যর্থতা থেকে বিল্ডিং ইত্যাদি I'd আমি এটিতে আর বেশি সময় ব্যয় করার আগে এটি সম্ভব কিনা তা জানতে চাই। আমি যদি ডেবিয়ান হয়ে থাকি তবে তা গুরুত্বপূর্ণ।
জন পি

1
@ জোহনপি এটি এখন গিটহাবটিতে
starbeamrainbowlabs

7

যদি আপনার প্রোগ্রামটি পুনরায় চালু করার প্রয়োজন হয় তবে আমি আপনাকে আপনার কোডটিতে এমন কিছু বৈশিষ্ট্য যুক্ত করতে কিছুটা সময় ব্যয় করতে উত্সাহিত করব যা ভবিষ্যতে আপনার সময় বাঁচাতে পারে।

যদি প্রক্রিয়াটি দীর্ঘ সময়ের জন্য চলতে থাকে, আপনি যখন মেশিনটি পুনরায় চালু করবেন তখন পুরো প্রক্রিয়া অবস্থাটি সংরক্ষণ করতে সক্ষম হওয়া সম্ভবত আপনার প্রসেসটি ক্র্যাশ হয়ে যাওয়ার সময় খুব বেশি সহায়ক হয় না।

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

আপনি আপনার কোড সেট আপ করতে পারলেন তাই আপনি যখন এটি সিগন্যাল প্রেরণ করবেন তখন এটি এই চেকপয়েন্ট ফাইলগুলির একটি সংরক্ষণ করে, আপনি যে কোনও সময়ে আপনার গণনার "রাজ্য" সংরক্ষণ করতে পারেন।

অতিরিক্ত হিসাবে, গণনাটির অগ্রগতির সাথে সাথে কীভাবে ডেটা পরিবর্তন হয় তা দেখতে পারা নিজের পক্ষে আকর্ষণীয় হতে পারে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.