हमारे क्लस्टर में, हम अपनी प्रक्रियाओं के संसाधनों को सीमित कर रहे हैं, उदाहरण के लिए मेमोरी ( memory.limit_in_bytes
)।
मुझे लगता है, अंत में, यह लिनक्स कर्नेल में ओओएम हत्यारा के माध्यम से भी संभाला जाता है ( स्रोत कोड को पढ़कर ऐसा लगता है )।
क्या मेरी प्रक्रिया के मारे जाने से पहले संकेत प्राप्त करने का कोई तरीका है? ( एसजीई के-notify
लिए विकल्प की तरह , जो प्रक्रिया को मारने से पहले भेज देगा ।)qsub
SIGUSR1
मैं /dev/mem_notify
यहाँ के बारे में पढ़ा, लेकिन मेरे पास नहीं है - आजकल कुछ और है? मैं भी पढ़ा यह जो कुछ हद तक प्रासंगिक लगती है।
मैं कम से कम एक छोटे स्टैक ट्रेस और शायद कुछ अन्य उपयोगी डिबग जानकारी को डंप करने में सक्षम होना चाहता हूं - लेकिन शायद मैं कुछ मेमोरी को मुक्त करके भी पुनर्प्राप्त कर सकता हूं।
एक वर्कअराउंड मैं वर्तमान में उपयोग कर रहा हूं यह छोटी स्क्रिप्ट है जो अक्सर जांचती है कि क्या मैं सीमा के करीब हूं (95%) और यदि ऐसा है, तो यह प्रक्रिया को ए भेजता है SIGUSR1
। बैश में, मैं इस स्क्रिप्ट को पृष्ठभूमि में शुरू कर रहा हूं ( cgroup-mem-limit-watcher.py &
) ताकि यह एक ही cgroup में अन्य procs के लिए देखता है और जब पैरेंट बैश प्रक्रिया मर जाती है तो यह स्वचालित रूप से क्विट करता है।