मैं कैसे बताऊं कि मेरा विंडोज सर्वर स्वैप कर रहा है?


29

मैं अपने डेटा को मॉनिटर करने के लिए प्रोसेस एक्सप्लोरर का उपयोग कर रहा हूं, जबकि यह कुछ डेटा को फिर से संगठित करता है। यह मुख्य रूप से एक सीपीयू गहन प्रक्रिया है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि यह स्वैपिंग न हो। मैं यह कैसे बता सकता हूं कि क्या यह प्रोसेस एक्सप्लोरर का उपयोग कर रहा है? मेरा प्रारंभिक अनुमान सिस्टम सूचना विंडो में है, यह पेजिंग फ़ाइल राइट डेल्टा है। हाँ? नहीं? मैं बेवकूफ़ हूँ?

* स्क्रीनशॉट सर्वर का नहीं है ... सिर्फ एक उदाहरण है।

alt text http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

जवाबों:


30

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

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

"रैम को केवल एक प्रदर्शन अनुकूलन के रूप में देखा जा सकता है। रैम में डेटा तक पहुंचना, जहां बिजली के क्षेत्रों में जानकारी संग्रहीत होती है जो प्रकाश की गति के करीब प्रचार करते हैं, डिस्क पर डेटा तक पहुंचने की तुलना में बहुत तेज है, जहां जानकारी भारी, भारी में संग्रहीत होती है लौह धातु के अणु

ऑपरेटिंग सिस्टम इस बात पर नज़र रखता है कि किन पृष्ठों से भंडारण की प्रक्रियाएँ सबसे अधिक बार एक्सेस की जा रही हैं, और गति बढ़ाने के लिए, रैम में उनकी प्रतिलिपि बनाता है। जब एक प्रक्रिया एक ऐसे पाइंटर के पास पहुंचती है जो वर्तमान में RAM में कैश नहीं होता है, तो ऑपरेटिंग सिस्टम एक "पेज फॉल्ट" करता है, डिस्क पर जाता है, और डिस्क से रैम तक पेज की एक कॉपी बनाता है, जिससे उचित धारणा बनती है यह जल्द ही कुछ समय बाद फिर से एक्सेस होने वाला है।

रीड-ओनली संसाधनों को साझा करने के बारे में ऑपरेटिंग सिस्टम भी बहुत स्मार्ट है। यदि दो प्रक्रियाएं दोनों समान DLL से कोड के एक ही पृष्ठ को लोड करती हैं, तो ऑपरेटिंग सिस्टम दो प्रक्रियाओं के बीच रैम कैश को साझा कर सकता है। चूंकि कोड संभवत: किसी भी प्रक्रिया द्वारा परिवर्तित नहीं होने वाला है, इसलिए रैम के डुप्लिकेट पेज को साझा करने से बचाना पूरी तरह से समझदारी है।

लेकिन चतुर साझाकरण के साथ, अंततः यह कैशिंग सिस्टम रैम से बाहर निकलने वाला है। जब ऐसा होता है, तो ऑपरेटिंग सिस्टम यह अनुमान लगाता है कि कौन से पृष्ठ जल्द ही फिर से एक्सेस किए जाने की संभावना है, अगर वे बदल गए हैं तो उन्हें डिस्क पर लिखता है, और उस रैम को मुक्त करता है जिसमें कुछ और पढ़ने के लिए होता है जो फिर से एक्सेस होने की अधिक संभावना है। शीघ्र।

जब ऑपरेटिंग सिस्टम गलत तरीके से अनुमान लगाता है, या अधिक संभावना है, जब सभी चलने वाली प्रक्रियाओं में सभी अक्सर-एक्सेस किए गए पृष्ठों को संग्रहीत करने के लिए बस पर्याप्त रैम नहीं होती है, तो मशीन "थ्रैशिंग" शुरू करती है। ऑपरेटिंग सिस्टम अपना सारा समय महंगे डिस्क स्टोरेज को लिखने और पढ़ने में खर्च करता है, डिस्क लगातार चलती है, और आपको कोई काम नहीं मिलता है।

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

इसे देखने का एक और तरीका यह है कि आपके प्रोग्राम की कुल वर्चुअल मेमोरी की खपत वास्तव में उसके प्रदर्शन के लिए बहुत प्रासंगिक नहीं है। जो प्रासंगिक है वह वर्चुअल मेमोरी की कुल मात्रा का उपभोग नहीं है, बल्कि (1) अन्य प्रक्रियाओं के साथ उस मेमोरी का कितना हिस्सा साझा नहीं किया गया है, (2) आमतौर पर उपयोग किए जाने वाले पृष्ठों का "वर्किंग सेट" कितना बड़ा है, और ( 3) क्या सभी सक्रिय प्रक्रियाओं के कामकाजी सेट उपलब्ध रैम से बड़े हैं।

अब तक यह स्पष्ट होना चाहिए कि "मेमोरी से बाहर" त्रुटियों का आम तौर पर कितना भौतिक मेमोरी से कोई लेना-देना नहीं है, या यहां तक ​​कि कितना संग्रहण उपलब्ध है। यह लगभग हमेशा पता स्थान के बारे में है, जो कि 32 बिट विंडोज पर अपेक्षाकृत छोटा है और आसानी से खंडित है। "

कुछ अतिरिक्त बिंदु:

  1. dll और प्रोग्राम फाइलें हमेशा केवल पृष्ठांकित होती हैं, कभी भी बाहर नहीं निकलती हैं क्योंकि वे पहले से ही डिस्क पर हैं (और आमतौर पर पहले पेज को मुक्त कर दिया जाता है जब भौतिक रैम कम हो जाता है)
  2. आप मुफ्त पेज टेबल प्रविष्टियों से बाहर निकलने के लिए बहुत अधिक पसंद करते हैं या किसी अन्य मेमोरी मुद्दों (पहले से ही उल्लेख किए गए समग्र खराब प्रदर्शन के अलावा अन्य) की तुलना में भारी मात्रा में फ्रिगर्ड मेमोरी है
  3. यहां तक ​​कि अगर आप कोई पृष्ठ फ़ाइल नहीं चलाते हैं, तब भी आप पृष्ठ दोष प्राप्त कर सकते हैं
  4. आम तौर पर कमिटेड मेमोरी को देखते हुए बोलना अधिक बताता है कि कैसे प्रक्रिया मेमोरी का उपयोग करती है

एक पूरी तस्वीर के लिए कैसे स्मृति पुतला काम खिड़कियों में देखते हैं

विंडोज एनटी में वर्चुअल-मेमोरी मैनेजर

अगर आपको लगता है कि आपके पास एक मेमोरी इश्यू है, तो मैं सबसे पहले इस प्रेजेंटेशन को विंडोज़ मेमोरी की समस्या निवारण पर देखने का सुझाव दूंगा

जब आप स्मृति विखंडन के लिए धन्यवाद नहीं करते हैं, तो कभी-कभी आपको "स्मृति से बाहर" प्राप्त करने का एक बड़ा विवरण यहां दिया गया है:

विंडोज की सीमाएं पुश करना भी देखें : भौतिक मेमोरी

वर्चुअल मेमोरी, मेमोरी फ्रैग्मेंटेशन और लीक्स और WOW64 पर अधिक

RAM, वर्चुअल मेमोरी, पेजफाइल और वह सब सामान (Microsoft समर्थन)

अद्यतन करें:

विंडोज 10 मेमोरी के साथ कुछ अलग करता है और, समय के साथ आपको "सिस्टम और संपीड़ित मेमोरी" नामक एक प्रक्रिया दिखाई देगी विंडोज 10 पेजिंग आउट सूची में एक "संपीड़न स्टोर" जोड़ता है। यह RAM USER मेमोरी है जो सिस्टम के स्वामित्व में है (आमतौर पर सिस्टम में केवल कर्नेल मेमोरी होती थी) यह मेमोरी लगभग 30% की औसत कमी के लिए संकुचित होती है। यह अधिक पृष्ठों को मेमोरी में संग्रहीत करने की अनुमति देता है (आप में से जो गणित कर रहे हैं कि 70% अधिक स्थान है) ध्यान दें कि यदि स्मृति में अभी भी दबाव है तो संपीड़न स्टोर (उपयोगकर्ता मोड सिस्टम प्रोसेस स्पेस) के पृष्ठों को संशोधित पर रखा जा सकता है। सूची (संपीड़ित) जो तब भौतिक पेजफाइल को लिखी जा सकती है। सिस्टम यह देखेगा कि वे सिस्टम यूजर मोड स्पेस और कंप्रेस्ड हैं और स्टोर में वापस डालने की कोशिश नहीं करेंगे। इसलिए विंडोज़ 10 सिस्टम पर ऐसा लग सकता है कि सिस्टम रैम को रगड़ रहा है, लेकिन वास्तव में यह सिर्फ रैम का उपयोग करने में अधिक कुशल होने की कोशिश कर रहा है। मैक उपयोगकर्ता 2013 से एक समान सुविधा का उपयोग कर रहे हैं, और लिनक्स कर्नेल के नए संस्करण स्मृति संपीड़न के एक संस्करण को रोजगार देते हैं। मेमोरी को संरक्षित करने का यह तरीका न केवल बेहतर है, बल्कि पहले से ही अन्य ऑपरेटिंग सिस्टम के बीच आम है।


6

हां, पेजिंग डेल्टास आपको लाइव संकेत देगा कि सर्वर कितना पेजिंग (या "स्वैपिंग") कर रहा है, लेकिन केवल उसी क्षण। इस और अधिक बारीकी से देखने के लिए, और एक ऐतिहासिक दृश्य देखने के लिए, मैं का उपयोग कर सुझाव है कि प्रदर्शन मॉनिटर ( perfmon.exe ) चार्ट या उन डेल्टा (और ब्याज की किसी भी अन्य प्रदर्शन काउंटरों कि में कीलें सहसंबंधी विशिष्ट घटनाओं या गतिविधियों के लिए मदद मिल सकती है रिकॉर्ड करने के लिए पेजिंग गतिविधि)।


5

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

"पेज इनपुट / सेक" काउंटर को "मेमोरी" ऑब्जेक्ट में देखें कि कितने हार्ड पेज दोष हो रहे हैं, इसके लिए परफ़ॉर्म का उपयोग कर रहे हैं।


0

अंगूठे का एक अच्छा नियम यह है कि यदि आपका कमिटमेंट चार्ज आपकी भौतिक मेमोरी से अधिक है, तो आप निश्चित रूप से कुछ पृष्ठांकित कर रहे हैं , लेकिन यदि आपका ऐप एक एकल निश्चित डेटा बफ़र का उपयोग करता है जिसे हमेशा उपयोग में रखा जा रहा है, तो इसे आमतौर पर पृष्ठांकित नहीं किया जाएगा। बिल्कुल बाहर। स्टार्टअप में कुछ देरी हो सकती है जबकि अन्य मेमोरी को इसके लिए जगह बनाने के लिए बाहर रखा गया है।


3
mh: मुझे यकीन नहीं है कि मैं आपके अंगूठे के नियम से सहमत हूं। यदि कमिट चार्ज भौतिक मेमोरी से अधिक है, तो इसका मतलब है कि कुछ बिंदु पर कुछ पृष्ठांकित किया गया था , लेकिन सिस्टम अभी भी कुछ भी पेजिंग नहीं कर रहा है। जब पृष्ठ दोष होता है तो कुछ केवल पृष्ठांकित हो जाएगा। अन्यथा मैं मानता हूं कि एक एकल निश्चित डेटा बफर का उपयोग सबसे अच्छा होगा, लेकिन फिर मुझे लगता है कि हम शायद stackoverflow.com के दायरे में आगे बढ़ रहे हैं
जेसिका मैकिननॉन

मेरा बुरा, मुझे कहना चाहिए "अतीत में कुछ स्वैप किया गया है, और भविष्य के मेमोरी अनुरोधों को भी स्वैपिंग की आवश्यकता होगी"।
मैक्सिमस मिनिमस

यह जरूरी नहीं है कि कोई एप्लिकेशन केवल पृष्ठों को लॉक कर सकता है इसकी स्मृति में ओएस विशेषाधिकार है।
जिम बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.