2012-03-26 39 views
22

अब मुझे लिनक्स एनएमआई वॉचडॉग के बारे में कोई समस्या आती है। मैं ओएस हैंग का पता लगाने और पुनर्प्राप्त करने के लिए लिनक्स एनएमआई वॉचडॉग का उपयोग करना चाहता हूं। इसलिए मैं grub.cfg में "nmi_watchdog = 1" जोड़ता हूं। और फिर/proc/interrupt की जांच करें, प्रति सेकंड एनएमआई ट्रिगर किया गया था। लेकिन जब मैं डेडलॉक (डबल-अधिग्रहण स्पिनलॉक) के साथ एक मॉड्यूल लोड करता हूं, तो सिस्टम पूरी तरह से लटकता था, और कुछ नहीं होता (कभी घबराहट नहीं!)। ऐसा लगता है कि एनएमआई वॉचडॉग काम नहीं कर रहा था!लिनक्स एनएमआई वॉचडॉग कैसे काम करता है?

तब मैं Documantation/nmi_watchdog.txt पढ़ें, यह कहते हैं:

ध्यान रखें कि जब स्थानीय APIC का उपयोग कर, एनएमआई की आवृत्ति व्यवधान यह उत्पन्न करता है, प्रणाली लोड पर निर्भर करता है है। स्थानीय एपीआईसी एनएमआई वॉचडॉग, एक बेहतर स्रोत की कमी, "चक्रों का उपयोग" घटना का उपयोग करता है।

"चक्र" घटना क्या है?

यह

जोड़ा है, लेकिन अगर आपके सिस्टम कुछ भी लेकिन "hlt" प्रोसेसर अनुदेश पर ताले, प्रहरी बहुत जल्द ही के रूप में "चक्र unhalted" घटना हर घड़ी टिक नहीं होगा ट्रिगर किया जाएगा .. यदि यह "एचएलटी" पर लॉक हो जाता है, तो आप भाग्य से बाहर हैं - घटना पर नहीं होगी और वॉचडॉग ट्रिगर नहीं होगा।

कि प्रहरी की तरह लगता है ट्रिगर नहीं करेगा अगर प्रोसेसर पर अमल "hlt" अनुदेश, तो मैं खोज "hlt" में "इंटेल 64 और IA-32 आर्किटेक्चर सॉफ्टवेयर डेवलपर की मैनुअल, volumn 2A", यह के रूप में वर्णन करता है अनुसरण करें:

निर्देश निष्पादन रोकता है और प्रोसेसर को एचएएलटी राज्य में रखता है। एक सक्षम इंटरप्ट (एनएमआई और एसएमआई समेत), एक डीबग अपवाद, बिनिट # सिग्नल, आईएनआईटी # सिग्नल, या आरईएसईटी # सिग्नल निष्पादन फिर से शुरू होगा।

तब मैं खो दिया है ...

मेरा प्रश्न है:

  • कैसे लिनक्स नॉटिकल मील प्रहरी काम करता है?
  • कौन एनएमआई ट्रिगर करें?

मेरा ओएस उबंटन 10.04 एलटीएस, लिनक्स-2.6.32.21, सीपीयू पेंटियम 4 ड्यूल-कोर 3.20 गीगाहर्ट्ज है।

मैं नॉटिकल मील प्रहरी (कोई समय) के बारे में पूरी स्रोत कोड है, तो मैं कैसे नॉटिकल मील प्रहरी काम नहीं समझ सकता है पढ़ा नहीं था,, मैं बाधा बाधा और अंतर-प्रोसेसर प्रदर्शन की निगरानी काउंटर का उपयोग करना चाहते हैं (हो एपीआईसी द्वारा प्रदान की गई) एनएमआई वॉचडॉग के बजाय एनएमआई भेजने के लिए।

क्या कोई मेरी मदद कर सकता है? धन्यवाद।

+0

अच्छी चीजें एनएमआई वॉचडॉग, इसे व्यापार के अपने टूल्स में जोड़ें – cctan

+0

लिनक्स कर्नेल कार्यान्वयन watchdog_nmi_enable()। – firo

उत्तर

4

जैसा कि मुझे पता है, nmi_watchdog केवल गैर-इंटरप्टिबल हैंग के लिए ट्रिगर होगा। मैं गूगल द्वारा एक कोड उदाहरण पाया: http://oslearn.blogspot.in/2011/04/use-nmi-watchdog.html

अपने गतिरोध गैर interruptiable नहीं है, तो आप कोशिश SysRq अधिक पाने के लिए कुछ का पता लगाने (Alt-printscreen-टी) या दुर्घटना (Alt-printscreen-ग) को गति प्रदान करने के लिए सक्षम कर सकते हैं जानकारी।

+1

धन्यवाद। मैंने पहले से ही nmi_watchdog (linux-2.6.32 में) के बारे में सभी स्रोतों को पढ़ा है, और अब मुझे पता है कि यह कैसे काम करता है :) – silverbullettt

+0

ब्लॉगस्पॉट लिंक सभी के लिए पढ़ने के लिए खुला है? – Adil

+0

@ एडील यह था। मैं बस इसे फिर से कोशिश करता हूं लेकिन यह अब काम नहीं कर रहा है। – Johnlcf

5

उत्तर आपके हार्डवेयर पर निर्भर करता है।

गैर-मास्केबल इंटरप्ट्स (एनएमआई) को दो तरीकों से ट्रिगर किया जा सकता है: 1) जब कर्नेल एक रोकथाम स्थिति तक पहुंच जाता है जिसे किसी अन्य विधि से बाधित नहीं किया जा सकता है, और 2) हार्डवेयर द्वारा - एनएमआई बटन का उपयोग करके।

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

यह बहुत तेज़ हो सकता है। इसलिए यदि आपके पास आउटपुट को फ़ाइल में सहेजने के लिए जुड़ा कंसोल नहीं है, तो यह केवल एक रीबूट की तरह दिख सकता है।