बाद में इसकी मेमोरी को स्वैप-आउट करने के लिए लिनक्स प्रक्रिया को कैसे रोकें


19

मैं एक लंबी चलने वाली प्रक्रिया को रोकना चाहता हूं ताकि यह भविष्य में उसी प्रक्रिया को फिर से शुरू करने के इरादे से किसी भी सीपीयू या भौतिक मेमोरी संसाधनों का उपभोग न करे ।

मुझे पता है कि CPU भाग का उपयोग करना SIGSTOPऔर SIGCONT संकेतों को प्राप्त करना संभव है, लेकिन क्या यह पृष्ठ-आउट (प्रक्रिया गंदे पृष्ठों के मामले में स्वैप-आउट) संभव है तुरंत (बंद) प्रक्रिया की निजी आरएसएस मेमोरी?


1
इसके पीछे क्या मंशा है? क्या आप यह सुनिश्चित करना चाहते हैं कि प्रक्रिया अधिक तेज़ी से शुरू हो? या क्या आप संवेदनशील डेटा को डिस्क पर लिखे जाने से रोकना चाहते हैं? या कुछ और? यदि हम इरादा जानते हैं, तो हम बेहतर उत्तर देने में सक्षम हो सकते हैं।
जैतून

13
ओएस स्वचालित रूप से ऐसा करेगा। वास्तव में कुछ खास करने का कोई कारण नहीं है।
डेविड श्वार्ट्ज

@oliver मैं एक बैच शेड्यूलर ( github.com/brutusin/wava ) बना रहा हूं । वर्तमान कार्यान्वयन गैर-प्रीमेप्टिव शेड्यूलिंग प्रदान करता है, लेकिन मैं कुछ गतिरोध स्थितियों से बचने के लिए एक प्रीमेप्टिव एक (स्टॉप रनिंग जॉब्स में सक्षम) की ओर बढ़ना चाहता हूं, जब सभी रनिंग जॉब्स कतारबद्ध नौकरियों पर निर्भर करते हैं। मुझे वास्तव में पूछे जाने वाले व्यवहार की आवश्यकता है, रुकी हुई प्रक्रियाओं को जारी रखना (चेकपॉइंट से नए नहीं बनाना)
idelvall

1
@DavidSchwartz जो एक जोखिम भरा दावा है
idelvall

@idelvall तब ऐसा लगता है कि आप स्मृति के लिए कुछ विशेष नहीं करना चाहते हैं।
डेविड श्वार्ट्ज

जवाबों:


11

आप चेकपॉइंट / रिस्टोर नामक तकनीक को देख सकते हैं। यह आपको एक रनिंग प्रक्रिया लेने और इसके राज्य को फाइलों के एक सेट में सहेजने की अनुमति देगा, फिर बाद में इसे पुनर्स्थापित कर देगा।
इसका उपयोग करने के लिए, क्रिउ [ गिट , विकी ] प्रोग्राम ( yum install criuया apt install criu) स्थापित करके शुरू करें ।

एक चल रही प्रक्रिया की जांच करने के लिए, उस निर्देशिका में अपनी फ़ाइलों और सीडी को रखने के लिए एक खाली निर्देशिका बनाएं।

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

अब चल रही प्रक्रिया की जांच करें। इस मामले में - मैं नौकरी का उपयोग कर रहा हूं क्योंकि मेरे पास एक संबद्ध ट्टी के साथ एक शेल में चलने की मेरी प्रक्रिया है।

criu dump -t 404 --shell-job

404 उस प्रक्रिया की ख़ूबी है जिसे मैं जांचना चाहता हूं। जब मैं ऐसा करता हूं तो मैं देखता हूं कि मेरी दौड़ने की प्रक्रिया को मार दिया जाता है और मेरी / var / tmp / चेकपॉइंट निर्देशिका को इसे पुनर्स्थापित करने के लिए आवश्यक फ़ाइलों के एक सेट के साथ आबाद हो जाती है।

प्रक्रिया को पुनर्स्थापित करने के लिए, मैं सुनिश्चित करता हूं कि मैं चेकपॉइंट फ़ाइलों के साथ निर्देशिका में हूं और एक पुनर्स्थापना करता हूं।

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

इस प्रक्रिया को उस टर्मिनल में छोड़ दिया जाएगा जहां इसे टर्मिनल में छोड़ा गया था। यदि मैं इस रनिंग प्रक्रिया को मारता हूं और criu restore --shell-jobफिर से रन करता हूं , तो प्रक्रिया वापस चेकपॉइंट पर वापस आ जाएगी और फिर से शुरू होगी।

उम्मीद है की यह मदद करेगा।


4
यह वह नहीं करता है जो ओपी का दावा है कि वे करना चाहते हैं। इसे आज़माएं - उपयोग की गई मेमोरी में कोई कमी नहीं होगी। यह बस प्रक्रिया निजी मेमोरी से डिस्क कैश (फाइलों के सेट को लिखने के कारण) पर स्विच करेगा। यह बस एक अतिरिक्त बचत कदम और एक अतिरिक्त पुनर्स्थापना कदम बनाता है, और उसी तरह की मेमोरी (और बेदखल) का उपयोग किया जाता है। वास्तव में, यह चीजों को बदतर बना सकता है क्योंकि कुछ मेमोरी को नया लिखने के लिए सब कुछ पैदा करने के कारण नकल हो जाती है।
डेविड श्वार्ट्ज

हे, गुड पॉइंट @ डेविड, खासकर अगर /tmptmpfs (मेमोरी / स्वैप स्पेस द्वारा समर्थित) है। यदि आप एक सामान्य डिस्क-समर्थित फाइलसिस्टम की जांच करते हैं, तो आप vmtouch -eपेजसेक से पृष्ठों को निकालने के लिए उपयोग कर सकते हैं , लेकिन यह अभी भी अस्थायी रूप से अतिरिक्त रैम का उपयोग करता है। (जब तक criuप्रत्यक्ष i / o (O_DIRECT के साथ) करने का विकल्प नहीं है ...)
पीटर कॉर्डेस

1
यह जानना मुश्किल है कि यह वही है जो ओपी चाहता है या नहीं क्योंकि ओपी यह बताने के बजाय कि वह किस समस्या को हल करने की कोशिश कर रहा है, एक विशिष्ट समाधान मांगता है। यह सही उत्तर हो सकता है या यह उसके लिए बेकार हो सकता है, हम नहीं बता सकते।
डेविड श्वार्ट्ज

मैंने इसे अभी तक विस्तार से नहीं देखा है लेकिन, ऐसा लगता है कि बहाल प्रक्रिया एक नई प्रक्रिया है (अलग-अलग pId), और यह बिल्कुल वैसी नहीं है जैसी मुझे चाहिए ...
idelvall

1
@idelvall: चेकपॉइंट / रिस्टोर वर्क का सबसे जायका है। एक प्रमुख उपयोग-मामला रिबूट के पार एक गणना में प्रगति को बचाने के लिए है।
पीटर कॉर्डेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.