मुझे लगता है कि यह ऐसी असामान्य समस्या नहीं है: एक प्रक्रिया भारी मात्रा में मेमोरी आवंटित करती है (यह एक मेमोरी-लीक बग के कारण होती है, क्योंकि आप एक असीम रूप से बड़े इनपुट फ़ाइल, या जो कुछ भी संसाधित करने की कोशिश करते हैं)। RAM भर जाता है, और कुछ बिंदु पर लिनक्स को स्वैप पर स्विच करना पड़ता है। खैर, कभी-कभी यह सिर्फ अंतिम उपाय होता है: यदि मेरे पास एक महंगी संगणना है, तो मैं डेटा को खोना नहीं चाहता हूं यदि अंत में मैं रैम से बाहर चला जाता हूं।
बल्कि अधिक बार हालांकि (मेरे अनुभव में), मेमोरी की खपत एक बदमाश, शायद छोटी गाड़ी की प्रक्रिया से निर्बाध है। यानी, मैं केवल कुछ कम जरूरी डेटा को स्वैप करने के लिए स्थानांतरित नहीं करता हूं , लेकिन ओएस को डेटा के भार को स्वैप करने के लिए मजबूर किया जाता है। और यह दुर्भाग्य से केवल भारी प्रक्रिया को तोड़ता नहीं है, लेकिन पूरे सिस्टम को लगभग एक ठहराव तक ला सकता है (यह एसएसडी के साथ मशीनों पर अब उतना बुरा नहीं है, लेकिन ओटीओएच ने मुझे चिंता में डाल दिया है कि क्या गीगाबाइट और गीगाबाइट के कचरा डेटा लिखना संभव हो सकता है) लंबे समय तक फ़्लैश कोशिकाओं को नुकसान पहुंचाता है)।
जब तक मैं समस्या को नोटिस करता हूं और मैन्युअल रूप से प्रक्रिया को मार देता हूं (एक बार वास्तव में मिनट लगते हैं जब तक कि मैंने खुद को वर्चुअल टर्मिनल में लॉग इन नहीं किया था!), मेरा आधा चलने का सत्र स्वैप में है, और जब तक सिस्टम सुचारू नहीं चलता तब तक मुझे काफी इंतजार करने की जरूरत है फिर।
समस्या का एक कठिन समाधान है: एक कठिन स्मृति सीमा लागू करना। लेकिन यह सिस्टम-वाइड करने से कभी-कभी उन प्रक्रियाओं को मार दिया जाता है जिनकी मुझे अभी भी आवश्यकता है, और अगर मुझे मैन्युअल रूप ulimit
से एक अपमानजनक प्रक्रिया शुरू करने से पहले ... ठीक है, तो मैं अक्सर भूल जाऊंगा जब तक कि बहुत देर हो चुकी हो।
संभव प्रकार के समाधान से मुझे खुशी होगी:
- यदि कोई प्रक्रिया एक निश्चित मेमोरी उपयोग से अधिक हो जाती है, तो यह कृत्रिम रूप से थ्रॉटल हो जाता है ताकि बाकी सिस्टम उत्तरदायी रहे।
- यदि कोई प्रक्रिया एक निश्चित मेमोरी उपयोग से अधिक है, तो यह
SIGSTOP
पेड है इसलिए मेरे पास यह जानने का समय है कि आगे क्या करना है। - यदि कोई प्रक्रिया रैम सीमा तक पहुंचती है, तो मुझे एक चेतावनी मिलती है, महान स्वैपिंग शुरू होने से पहले ।
क्या ऐसा व्यवहार पाने का कोई तरीका है, या समान है?
ulimit
है।