क्या memtest86 + स्मृति का परीक्षण करता है जो स्वयं को चलाने के लिए उपयोग किया जाता है?


65

सामान्य सर्वर विफलता परिदृश्यों में से एक खराब DRAM है, कभी-कभी ईसीसी मेमोरी का उपयोग करने पर भी।

memtest86+DRAM समस्याओं के निदान के लिए सबसे उपयोगी उपकरणों में से एक है। जैसे ही यह मेमोरी की शुरुआत में लोड होता है, मैं सोच रहा था कि क्या memtest86+मेमोरी के उस हिस्से को चेक करता है जिसे memtest86+लोड किया गया है।

क्या स्मृति को memtest86+इतनी छोटी मात्रा में आवंटित किया जाता है कि यह कोई फर्क नहीं पड़ता, या क्या यह संभव है कि memtest86+DRAM में कोई कमी हो सकती है क्योंकि यह उन स्मृति स्थानों का परीक्षण नहीं कर सकता है, जिनमें वह निवास कर रहा है?


8
जबकि यह प्रश्न एक सर्वर के लिए प्रासंगिक है, यह एक साधारण पीसी के लिए भी प्रासंगिक है, इसलिए मैंने इस प्रश्न को सुपर उपयोगकर्ता को स्थानांतरित करने के लिए मतदान किया है जहां यह अधिक लोगों तक पहुंच सकता है।
क्रिस्टियन सियुपिटु 15

जवाबों:


78

जाहिर है, memtest86 + स्मृति क्षेत्र का परीक्षण नहीं कर सकता है जिसमें वर्तमान में memtest86 + निष्पादन योग्य कोड है (लेकिन यदि उस क्षेत्र में मेमोरी त्रुटियां हैं, तो यह बहुत संभावना है कि परीक्षण स्वयं दुर्घटनाग्रस्त हो जाएगा)। हालाँकि, memtest86 + रनटाइम पर एक अलग पते पर अपने कोड को स्थानांतरित करने में सक्षम है, और इस चाल का उपयोग करके यह सभी मेमोरी का परीक्षण करने में सक्षम है जिसे इसे फर्मवेयर (BIOS) द्वारा उपयोग करने की अनुमति है - बस एक ही बार में नहीं।

इस कोड के स्थानांतरण का वर्णन memadest86 + source कोड संग्रह के अंदर README.background में किया गया है (फ़ाइल थोड़ा पुराना है - उदाहरण के लिए, यह बताता है कि memtest86 + कोड के लिए उपयोग किए गए पते 0x2000 और 0x200000 हैं, लेकिन स्रोत में परिभाषित निम्न पता है) वास्तव में 0x10000, और उच्च पता या तो 0x2000000 है या मशीन में मेमोरी की मात्रा के आधार पर 0x300000 है)।

लेकिन इस स्थानांतरण चाल के साथ भी memtest86 + निम्नलिखित कारणों से सभी मेमोरी का परीक्षण करने में सक्षम नहीं है:

  • आमतौर पर फर्मवेयर (BIOS) अपने स्वयं के उपयोग के लिए कुछ रैम क्षेत्रों को आरक्षित करता है (जैसे, एसीपीआई टेबल)। जबकि इन RAM क्षेत्रों को CPU द्वारा एक्सेस किया जा सकता है, लेकिन उनमें कुछ भी लिखने से अप्रत्याशित व्यवहार हो सकता है।

  • RAM का कुछ हिस्सा सिस्टम प्रबंधन मोड के लिए उपयोग किया जाता है और विशेषाधिकार प्राप्त एसएमएम कोड के बाहर सीपीयू से भी सुलभ नहीं है।

  • 640K और 1M के बीच RAM पता श्रेणी लीगेसी पीसी मेमोरी लेआउट की quirks के कारण दुर्गम है (कुछ इस RAM का उपयोग BIOS ROM के लिए एक छाया के रूप में और SMM के लिए, अन्य भागों को पूरी तरह से अप्राप्य हो सकता है)।


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

उन मैप किए गए क्षेत्रों में आम तौर पर DRAM को बाहर रखा जाता है क्योंकि कुछ और "ऑफ मॉड्यूल" संबोधित किया जा रहा है? ROM और परिधीय उपकरण कहते हैं।
mckenzm

3
यदि आपके पास कई रैम मॉड्यूल हैं, तो उन्हें स्वैप करने के बाद दूसरा परीक्षण करें ...
JFL

क्या यह याद रखना संभव है कि अपने निर्देशों को फिर से लिखे जाने के कारण स्मृति को गलत तरीके से रिपोर्ट करने में सफलता के सही तरीके से असफल होना चाहिए? या यों कहें कि इसमें कितने दोष हैं?
जॉन ड्वोरक

3
@JDDvorak: सिद्धांत रूप में, यह संभव है, निश्चित रूप से। व्यवहार में, मैं कहूँगा कि यह कीबोर्ड पर अपना सिर पीटने और शेक्सपियरियन सॉनेट को बेतरतीब ढंग से टाइप करने की तुलना में थोड़ा अधिक है।
इल्मरी करोनें

5

नहीं, यादगार अपनी स्मृति का परीक्षण नहीं कर सकता। हालांकि, यह इतना छोटा है (केवल कुछ केबी) कि यह शायद ही मायने रखता है। EDIT: यह कथन तब से गलत है, जैसा कि चयनित उत्तर में कहा गया है, मेमोटेस्ट सभी उपयोगकर्ता पते की मेमोरी का परीक्षण करने के लिए गतिशील रूप से खुद को स्थानांतरित कर सकता है ।

-

सिद्धांत रूप में, आधुनिक प्रोसेसर, बूट समय पर, अपने कैश के हिस्से को प्रोग्रामेबल मेमोरी के रूप में कॉन्फ़िगर कर सकता है, बहुत छोटे कार्यक्रमों के भीतर से (यादगार के रूप में) DRAM को छूने के बिना चलाया जा सकता है ।

हालाँकि, यह एक मॉडल-विशिष्ट विशेषता है (जिसमें BIOS समर्थन की आवश्यकता होती है) और मुझे नहीं लगता कि मेमेटेस्ट इसका उपयोग कर रहा है।


आपके उत्तर के लिए धन्यवाद। memtestसीपीयू कैश का भी परीक्षण कर रहा है। तो अगर memtestइस कैश में लोड किया जाएगा, तो यह कैश के इस हिस्से का परीक्षण नहीं किया जा सकता है, जो अधिक समस्याग्रस्त है, क्योंकि यह मेमोरी से बहुत छोटा है?
रॉबिन

2
Memtest86 प्रलेखन पर आधारित यह कम से कम प्रत्यक्ष तरीके से प्रोसेसर कैश का परीक्षण नहीं करता है। इसके अलावा, आधुनिक प्रोसेसर के अलग-अलग निर्देश और डेटा कैश (I $ और D $) हैं। निष्पादन योग्य कोड को अनुदेश कैश में लोड किया गया है और इसे सीधे संशोधित / अधिलेखित नहीं किया जा सकता है
shodanshok

1
memtest86 + निश्चित रूप से CPU डेटा कैश का परीक्षण करता है, लेकिन यह इस प्रश्न के लिए मायने नहीं रखता है। आपके उत्तर के लिए फिर से धन्यवाद।
रॉबिन

3
क्या तुम इसके बारे में निश्चित हो? मुझे लगा कि स्मृति की जांच करते समय इसे कहीं और कॉपी किया गया है। आम तौर पर यह रहता है। इसीलिए हर परीक्षा में एक धीमा हिस्सा होता है (अधिकांश मेमोरी) और वास्तव में तेजी से भाग (जहां इसका कोड / डेटा संग्रहीत होता है)।
पीटर कॉर्डेस

1
@DmitryGrigoryev: आह ठीक है .. तो मैंने कुछ और सीखा है :-) कूल धन्यवाद!
रॉबिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.