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


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

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

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


62
2018-01-21 07:45


मूल


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


जवाब:


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

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

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

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

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

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


78
2018-01-21 11:59



दिलचस्प है, मैं अपनी स्थानांतरण क्षमता याद किया। जाहिर है एसएमएम और पसंद सीमा से बाहर हैं (विशिष्ट बीआईओएस समर्थन के अलावा)। - shodanshok
उन मैप किए गए क्षेत्र आम तौर पर डीआरएएम को छोड़कर कुछ और "ऑफ मॉड्यूल" को संबोधित करते हैं? रॉम और परिधीय उपकरण कहते हैं। - mckenzm
यदि आपके पास कई रैम मॉड्यूल हैं, तो उन्हें बदलने के बाद दूसरा परीक्षण करें ... - JFL
क्या इसके निर्देशों को फिर से लिखने के कारण गलत तरीके से सफलता की रिपोर्ट करने के सही तरीके से स्मृति विफल हो सकती है? या फिर, यह कितने दोष लेता है? - John Dvorak
@JanDvorak: सिद्धांत रूप में, यह निश्चित रूप से संभव है। प्रैक्टिस में, मैं कहूंगा कि कीबोर्ड पर अपने सिर को टक्कर देने और यादृच्छिक रूप से शेक्सपियरन सॉनेट टाइप करने से थोड़ा अधिक संभावना है। - Ilmari Karonen


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

-

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

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


5
2018-01-21 10:02



आपके उत्तर के लिए धन्यवाद। memtest सीपीयू कैश का परीक्षण भी कर रहा है। तो अगर memtest इस कैश में लोड किया जाएगा, तो कैश का यह हिस्सा परीक्षण नहीं किया जा सका, जो अधिक समस्याग्रस्त है, क्योंकि यह स्मृति से बहुत छोटा है? - Robin
पर आधारित memtest86 दस्तावेज ऐसा होता है नहीं कम से कम सीधे तरीके से प्रोसेसर कैश का परीक्षण करें। इसके अलावा, आधुनिक प्रोसेसर के पास अलग-अलग निर्देश और डेटा कैश (I $ और D $) हैं। निष्पादन योग्य कोड निर्देश कैश में लोड किया गया है और इसे सीधे संशोधित / ओवरराइट नहीं किया जा सकता है - shodanshok
memtest86 + निश्चित रूप से CPUs डेटा कैश का परीक्षण करता है, लेकिन इससे इस प्रश्न के लिए कोई फर्क नहीं पड़ता। आपके उत्तर के लिए फिर से धन्यवाद। - Robin
क्या तुम इसके बारे में निश्चित हो? मैंने सोचा था कि यह स्मृति की जांच करते समय कहीं और कॉपी करता है, यह सामान्य रूप से रहता है। यही कारण है कि प्रत्येक परीक्षण में धीमा हिस्सा होता है (अधिकांश स्मृति) और वास्तव में तेज़ हिस्सा होता है (छोटा सा जहां उसका कोड / डेटा संग्रहीत होता है)। - Peter Cordes
@DmitryGrigoryev: आह ठीक है .. तो मैंने कुछ और सीखा है :-) कूल धन्यवाद! - Robin