Windows मेमोरी की गहराई (भाग 2) — भौतिक पेज का जीवन: पाँच सूचियाँ और पेज फ़ाइल की सच्चाई

· · Windows, मेमोरी प्रबंधन, पेज फ़ाइल, Working Set, Standby, RAMMap, प्रदर्शन निगरानी

पिछले लेख, «Windows मेमोरी की गहराई (भाग 1) — वह क्षण जब वर्चुअल पता भौतिक RAM बन जाता है» में हमने उस क्षण तक पीछा किया जब पेज-फ़ॉल्ट हैंडलर पहली बार छुए गए Commit पेज पर भौतिक पेज आवंटित करता है। तो वह भौतिक पेज Working Set से निकलने के बाद कहाँ जाता है?

अक्सर व्याख्या «उसे पेज फ़ाइल में निकाल दिया जाता है» तक सिमट जाती है, लेकिन वास्तव में उसके पहले और बाद कई अवस्थाएँ होती हैं। अपरिवर्तित पेज सामग्री छोड़कर Standby में जा सकता है। परिवर्तित पेज पहले Modified पर वापस-लेखन की प्रतीक्षा करता है। पुनः उपयोग पर वह Free या Zeroed से गुज़र सकता है, और अगर वही सामग्री फिर चाहिए तो Standby से सॉफ्ट फ़ॉल्ट से लौट सकता है।

यह लेख PFN डेटाबेस को अक्ष मानकर एक भौतिक पेज Active, Modified, Standby, Free और Zeroed से कैसे चलता है का पीछा करता है। संख्याओं का पढ़ना स्वयं परिचयात्मक लेख «What Does Windows’ “Memory Usage” Actually Mean? — Correctly Reading Working Set, Private Bytes, Commit, and the Page File» को मानकर चलता है।

«Windows मेमोरी की गहराई» — सभी 3 भाग

  1. भाग 1: वर्चुअल पते और पेज फ़ॉल्ट
    हम पीछा करते हैं कि Commit वर्चुअल पेज कब भौतिक RAM पाता है।
  2. भाग 2 (यह लेख): भौतिक पेज का जीवन
    हम Working Set छोड़ने वाले पेज की अवस्था-संक्रमण और पेज फ़ाइल की भूमिका का पीछा करते हैं।
  3. भाग 3: सेक्शन ऑब्जेक्ट और कॉपी-ऑन-राइट
    हम उस तंत्र का पीछा करते हैं जिससे DLL, फ़ाइल मैपिंग और साझा मेमोरी भौतिक पेज साझा करते हैं।

भाग 2 जिस प्रश्न का उत्तर देता है वह केवल एक है।

Working Set छोड़ने वाला भौतिक पेज गायब होता है, डिस्क पर जाता है, या RAM में रहता है?

इच्छित पाठक वे डेवलपर और ऑपरेटर हैं जो तंत्र से समझना चाहते हैं कि Available ऊँचा होने पर Standby भी ऊँचा क्यों होता है, Working Set ट्रिम के बाद व्यवहार, पेज फ़ाइल कॉन्फ़िगरेशन और मेमोरी संपीड़न। पूर्वापेक्षाएँ Windows 10/11 या वर्तमान Windows Server हैं, और आवश्यक पृष्ठभूमि Working Set, Commit तथा सॉफ्ट/हार्ड फ़ॉल्ट की बुनियाद है। कठिनाई मध्यम है; हम PFN और पेज सूचियाँ जैसे आंतरिक शब्द इस्तेमाल करते हैं, लेकिन फोकस उस पर है जो कर्नेल डिबगर के बिना RAMMap और PerfMon से देखा जा सकता है।

1. पहले निष्कर्ष

शुरू में वे बिंदु हैं जिन्हें गलत पढ़ना आसान है।

  • Working Set छोड़ने वाला पेज जरूरी नहीं तुरंत गायब हो।
    साफ़ पेज Standby पर रहता है और वही सामग्री चाहिए तो डिस्क पढ़े बिना लौट सकता है।
  • परिवर्तित पेज तुरंत पुनः उपयोग नहीं हो सकता।
    निजी सामग्री पेज फ़ाइल में वापस लिखे जा सकने के बाद पुनः उपयोग योग्य होती है; मैप की गई फ़ाइल, संबंधित फ़ाइल में वापस लिखे जा सकने के बाद; इत्यादि।
  • Available में Standby शामिल है।
    Standby ऐसा कैश है जो अभी सामग्री रखता है और साथ ही पुनः उपयोग उम्मीदवार जिसे जरूरत हो तो तुरंत लिया जा सकता है।1
  • पेज फ़ाइल में लेखन ऐसा बैच काम नहीं है जो RAM पूरी तरह खत्म होने के बाद ही शुरू हो।
    यह Modified सूची और मेमोरी दबाव के अनुसार पृष्ठभूमि में चलता है।23
  • पेज फ़ाइल केवल «धीमी RAM» नहीं है।
    यह Commit Limit बढ़ाती है, परिवर्तित निजी पेज का बैकिंग स्टोर बनती है, और क्रैश डंप सहारा देती है।4
  • पेज फ़ाइल बंद करने से मेमोरी लीक ठीक नहीं होता।
    Commit Limit गिरता है, और RAM का प्रभावी उपयोग तथा डंप पकड़ने की क्षमता खो सकती है।

एक वाक्य में: Windows पेज त्यागने से पहले जाँचता है कि वह फिर चाहिए हो सकता है या नहीं, और क्या कोई जगह है जहाँ से मूल सामग्री बहाल की जा सके

2. PFN डेटाबेस — भौतिक-RAM पक्ष की खाता-पुस्तक

भाग 1 में देखा PTE वर्चुअल पेज से भौतिक पेज का अनुवाद दर्शाता था। वह खाता-पुस्तक जो इसे भौतिक-पेज पक्ष से देखती है और पीछा करती है «यह RAM पेज अभी किस काम में है» PFN डेटाबेस है। PFN का अर्थ Page Frame Number है: पेज इकाइयों में क्रमांकित भौतिक RAM।

एक PFN प्रविष्टि अवधारणात्मक रूप से निम्न जानकारी ट्रैक करती है।

  • भौतिक पेज की वर्तमान अवस्था
  • संदर्भ गिनती और साझा गिनती
  • संबंधित PTE
  • क्या वह परिवर्तित है
  • वह किस पेज सूची से संबंधित है
  • NUMA नोड और प्राथमिकता संबंधी जानकारी

WinDbg में !pfn किसी खास PFN की जानकारी दिखाता है, और !memusage भौतिक-मेमोरी उपयोग तथा प्रत्येक पेज सूची के योग दिखाता है।56 बिना कर्नेल डिबगर के वही संसार देखने के लिए Sysinternals RAMMap उपलब्ध है। Use Counts उद्देश्य और पेज सूची दिखाता है, Priority Summary प्राथमिकता के अनुसार Standby, और Physical Pages प्रति-पेज उपयोग।7

3. पाँच अवस्थाओं को एक चित्र में जोड़ना

यह लेख भौतिक पेज के प्रवाह को निम्न पाँच अवस्थाओं के रूप में सरल मानता है। सख्ती से, वर्तमान Windows में यहाँ न खींची गई अवस्थाएँ और सूचियाँ हैं — प्राथमिकता के अनुसार Standby, Transition, Bad और अन्य — और Active किसी एक «Active सूची» से कम, वैध PTE के माध्यम से Working Set आदि से संदर्भित होने की अवस्था को दर्शाता है। फिर भी ऐप की मेमोरी व्यवहार पढ़ने के लिए यह चित्र पर्याप्त उपयोगी है।

Windows भौतिक पेज के Active, Modified, Standby, Free और Zeroed से गुज़रने का सरलीकृत आरेख

चित्र 1: Working Set में संदर्भित पेज साफ़ हो तो Standby में और गंदा हो तो Modified में जाता है। वही सामग्री लौट सकती है; दूसरा उपयोग पेज को सीधे पुनः उपयोग करता है या शून्य चाहिए वाले आवंटन के लिए Free/Zeroed से गुज़रता है।

चित्र 1 का Mermaid स्रोत ```text flowchart LR zeroed["Zeroed\nशून्य किया"] -->|पहला Touch| active["Active / Valid\nWorking Set में संदर्भित"] active -->|clean ट्रिम| standby["Standby\nसामग्री सहित पुनःउपयोग उम्मीदवार"] active -->|dirty ट्रिम| modified["Modified\nवापस लिखने की प्रतीक्षा"] modified -->|लेखन पूरा| standby standby -->|सॉफ्ट फॉल्ट से वापसी| active standby -->|पुरानी पहचान छोड़ें| free["Free\nअभी शून्य नहीं"] standby -->|सीधे दूसरे काम में| active free -->|शून्य वाली आवंटन के लिए| zeroed ```

इस चित्र का सबसे महत्वपूर्ण बिंदु यह है कि Working Set छोड़ना और सामग्री खोना एक ही बात नहीं हैं। साथ ही, जब Standby पेज दूसरे काम के लिए लिया जाता है, वह जरूरी नहीं क्रम से Free/Zeroed से गुज़रे। अगर उसे यूज़र मोड को नए demand-zero निजी पेज के रूप में सौंपा जाएगा, पुरानी सामग्री मिटानी होगी; अगर पूरा पेज अधिलेखित होगा, जैसे फ़ाइल पढ़ने का गंतव्य, Standby पहचान हटाकर पेज सीधे पुनः उपयोग हो सकता है।

4. Active / Valid — वह भौतिक पेज जिसे अभी संदर्भित किया जा सकता है

Active/Valid पेज वैध PTE के माध्यम से प्रक्रिया के Working Set या सिस्टम स्थान से संदर्भित होता है। CPU सामान्य पता-अनुवाद से पहुँचता है, इसलिए पहुँच स्वयं को पेज फ़ॉल्ट की जरूरत नहीं।

हालाँकि कोई गारंटी नहीं कि पेज Active रहेगा। उपलब्ध मेमोरी बनाए रखने के लिए मेमोरी मैनेजर Working Set आकार, पेज हाल में कितना इस्तेमाल हुआ, और ऐसे कारक देखता है, और उम्मीदवार पेज ट्रिम करता है। Microsoft का Working Set दस्तावेज़ भी बताता है कि उपलब्ध मेमोरी बनाने के लिए मेमोरी मैनेजर Working Set से पेज हटाता है।8

4.1. ट्रिम मुक्त करना नहीं है

Working Set ट्रिम मुख्यतः वैध PTE से तुरंत संदर्भित होने की निवासी अवस्था बदलता है। निम्न चार को अलग घटनाएँ मानें।

  • Working Set से हटाना
  • Commit मुक्त करना
  • वर्चुअल पता सीमा मुक्त करना
  • मूल डेटा खोना

EmptyWorkingSet या किसी टूल का «Trim Working Set» चलाना VirtualFree या हीप फ्री का विकल्प नहीं है। अगर आप उसी पेज को फिर छूते हैं, वह Standby से सॉफ्ट फ़ॉल्ट या बैकिंग स्टोर से हार्ड फ़ॉल्ट से लौटता है। इसलिए «मैंने Working Set छोटा किया» का अर्थ «मैंने लीक ठीक किया» नहीं है।

5. साफ़ पेज Standby में जाता है

पेज Working Set से निकलने के बाद भी, अगर उसकी सामग्री अभी मूल फ़ाइल से मेल खाती है या उसके पास पहले से सुरक्षित बैकिंग स्टोर है, उसे Standby पर रखा जा सकता है। प्रतिनिधि उदाहरण:

  • अपरिवर्तित EXE/DLL कोड
  • अपरिवर्तित मेमोरी-मैप की गई फ़ाइल
  • पहले से वापस लिखा निजी पेज
  • फ़ाइल कैश में बची डेटा

Standby पेज पिछली सामग्री से अपना संबंध रखता है। जब वही प्रक्रिया या दूसरी प्रक्रिया उस सामग्री को चाहती है, अगर पेज अभी पुनः उपयोग नहीं हुआ, PTE फिर जोड़ने वाला सॉफ्ट फ़ॉल्ट उसे बहाल करने के लिए काफी है।

दूसरी ओर, अगर दूसरे आवंटन को भौतिक पेज चाहिए, पुरानी Standby पहचान छोड़कर पेज पुनः उपयोग हो सकता है। अगर पुनः उपयोग गंतव्य शून्य आरंभीकरण चाहिए वाला यूज़र-मोड निजी पेज है, Zeroed पेज तैयार होता है; अगर पूरा पेज फ़ाइल सामग्री आदि से अधिलेखित होगा, उसे बिना शून्य किए सीधे पुनः सौंपा जा सकता है।

यही दोहरापन Standby के कैश और Available दोनों होने का कारण है।

5.1. Available में Standby क्यों शामिल है

MEMORYSTATUSEX.ullAvailPhys उस भौतिक मेमोरी को दर्शाता है जिसे डिस्क पर लिखे बिना तुरंत पुनः उपयोग किया जा सकता है, और वह Standby, Free तथा Zeroed का योग है।1

Available बनाने वाली तीन पेज सूचियाँउपलब्ध भौतिक मेमोरी Standby, Free और Zeroed का योग है; Working Set में संदर्भित Active पेज शामिल नहीं हैंशामिल नहींStandby(सामग्री रखने वाला पुनः उपयोग उम्मीदवार)Available(उपलब्ध भौतिक मेमोरी)Free(अप्रयुक्त, शून्य नहीं)Zeroed(अप्रयुक्त और शून्य)Active(Working Set में संदर्भित)

चित्र 2: Available Standby, Free और Zeroed का योग है। वह Standby जो अभी सामग्री रखता है भी «उपलब्ध» गिना जाता है।

इसलिए Task Manager में «Free कम है, फिर भी Cached/Standby ऊँचा है और Available पर्याप्त» दिखना विरोधाभास नहीं है। Windows खाली RAM को बेकार नहीं छोड़ता; वह हाल में इस्तेमाल फ़ाइलें और कोड Standby पर छोड़ता है ताकि जरूरत हो तो कैश के रूप में जल्दी पुनः उपयोग हों, और दूसरे काम को चाहिए तो ले लेता है।

यह निष्कर्ष न निकालें कि «Free कम है, इसलिए तुरंत मेमोरी कम है»; Available, Commit, हार्ड फ़ॉल्ट और प्रसंस्करण विलंब साथ देखें।

6. गंदा पेज Modified पर प्रतीक्षा करता है

जब ऐप पेज पर लिखता है, वह सामग्री मूल बैकिंग स्टोर से मेल नहीं खाती। उस गंदे पेज को दूसरे काम के लिए अधिलेखित करना डेटा खो देगा। इसलिए Working Set से निकाला परिवर्तित पेज Modified पर वापस-लेखन की प्रतीक्षा करता है।

वापस-लेखन गंतव्य पेज के प्रकार पर निर्भर करता है।

पेज का प्रकार विशिष्ट वापस-लेखन गंतव्य
निजी Commit पेज पेज फ़ाइल
लिखने योग्य मैप की गई फ़ाइल संबंधित डेटा फ़ाइल
फ़ाइल कैश में गंदा डेटा संबंधित डेटा फ़ाइल
साफ़ EXE/DLL पेज वापस-लेखन जरूरी नहीं। मूल इमेज से फिर पढ़ा जा सकता है

Microsoft का पेज फ़ाइल दस्तावेज़ भी बताता है कि डिस्क पर पहले से मौजूद .dll, .exe और साधारण फ़ाइलों को पेज फ़ाइल में फिर लिखने की जरूरत नहीं, और मूल डिस्क प्रति बिना परिवर्तित डेटा पेज फ़ाइल का उम्मीदवार बनता है।2

6.1. Modified Page Writer

Modified Page Writer एक सिस्टम वर्कर है जो मेमोरी मैनेजर द्वारा ट्रैक किए गए, पेज फ़ाइल से बैक किए गए गंदे पेज स्कैन करता है और उन्हें पेज फ़ाइल में लिखता है।3 मैप की गई फ़ाइल पक्ष पर Mapped Page Writer जैसे पथ हैं, जो फ़ाइल सिस्टम और कैश मैनेजर के साथ मिलकर संबंधित फ़ाइल में वापस लिखते हैं।

यहाँ महत्वपूर्ण यह है कि लेखन «RAM 0 बाइट होने तक कुछ न करना» योजना नहीं है। Windows भविष्य में पुनः उपयोग योग्य पेज पृष्ठभूमि में तैयार करता है, Modified सूची, Available, पेज फ़ाइल की स्थिति आदि के अनुसार। जब वापस-लेखन पूरा हो और अन्य वैध संदर्भ न हों, पेज अपनी सामग्री के साथ Standby में आगे बढ़ता है।

परिवर्तित पेज के वापस-लेखन पथWorking Set छोड़ने वाला परिवर्तित पेज Modified सूची पर प्रतीक्षा करता है; निजी पेज के लिए, अगर पेज फ़ाइल कॉन्फ़िगर है, Modified Page Writer उसे पेज फ़ाइल में लिखता है, और मैप की गई फ़ाइल का पेज Mapped Page Writer आदि संबंधित डेटा फ़ाइल में वापस लिखता है, फिर सामग्री के साथ Standby में जाता हैनिजी पेज(पेज फ़ाइल कॉन्फ़िगर होने पर)मैप की गई फ़ाइल का पेजWorking Set छोड़ा परिवर्तित पेजModified सूची पर वापस-लेखन की प्रतीक्षाModified Page Writer पेज फ़ाइल में लिखता हैMapped Page Writer आदि संबंधित फ़ाइल में वापस लिखता हैवापस-लेखन के बाद, सामग्री के साथ Standby

चित्र 3: वापस-लेखन गंतव्य पेज के प्रकार से तय होता है, और दोनों पथ पृष्ठभूमि में चलते हैं। पेज फ़ाइल बंद सिस्टम पर निजी-पेज पक्ष का वापस-लेखन गंतव्य नहीं होता, इसलिए परिवर्तित निजी पेज RAM में रहते हैं।

6.2. पेज आउटपुट और पेज-फ़ाइल-विशिष्ट I/O अलग करना

निम्न काउंटर आसानी से उलझते हैं; पुष्टि करें कि उनका अर्थ क्या है।

  • Memory\\Page Writes/sec: भौतिक मेमोरी खाली करने के लिए जारी पेजिंग लेखन I/O की संख्या
  • Memory\\Pages Output/sec: उन लेखनों से डिस्क पर लिखे पेजों की संख्या
  • Memory\\Page Reads/sec: हार्ड फ़ॉल्ट हल करने के लिए जारी डिस्क-पठन I/O की संख्या
  • Memory\\Pages Input/sec: उन पठनों से RAM में आए पेजों की संख्या

ध्यान दें कि Page Writes/sec और Pages Output/sec ऐसे काउंटर नहीं जो अकेले पेज फ़ाइल पहचानें। वे फ़ाइल-बैक किए गए गंदे पेज वापस लिखने वाले पथ पर भी बढ़ सकते हैं, जैसे मैप की गई फ़ाइलें। उलटा, इनपुट पक्ष भी पेज फ़ाइल, DLL, EXE और मेमोरी-मैप फ़ाइलों में भेद नहीं करता।2 अगर आप pagefile.sys विशिष्ट I/O पहचानना चाहते हैं, इन चार काउंटर से अकेले अनुमान न लगाएँ; ETW/WPA से File I/O और Disk I/O रिकॉर्ड करें और FileObject तथा FileName मिलाकर लक्ष्य फ़ाइल पुष्टि करें।9

एक और बिंदु: पहले पेज फ़ाइल में लिखना तुरंत डिस्क से वापस पढ़ना नहीं है। अगर पेज एक्सेस नहीं होता, वापस लिखे पेज को RAM से हटाकर भौतिक मेमोरी अधिक इस्तेमाल होने वाले पेजों को दी जा सकती है।

7. Standby, Free और Zeroed में अंतर

7.1. Standby

वह अवस्था जो अभी पिछली सामग्री से संबंध रखती है।

  • अगर वही सामग्री चाहिए, सॉफ्ट फ़ॉल्ट से लौट सकती है
  • अगर दूसरे काम को चाहिए, पुरानी पहचान छोड़कर पुनः उपयोग हो सकती है
  • प्राथमिकता के अनुसार Standby सूचियाँ हैं

7.2. Free

पिछली सामग्री से वैध संबंध खो चुका है, और पेज आवंटनीय है। हालाँकि पुराना बिट पैटर्न अभी पेज में रह सकता है। उसे जैसा है वैसा यूज़र मोड को देना पिछली प्रक्रिया की जानकारी लीक करने का जोखिम है।

7.3. Zeroed

सामग्री शून्य है, और पेज नए यूज़र-मोड पेज के रूप में सुरक्षित सौंपा जा सकता है। भाग 1 का demand-zero फ़ॉल्ट उपलब्ध Zeroed पेज पाकर PTE से बाँधने का प्रतिनिधि मामला था। Free से Zeroed की तैयारी माँग और सिस्टम अवस्था के अनुसार होती है।

इसलिए भले «Free» और «Zeroed» दोनों अप्रयुक्त दिखें, सुरक्षा-संबंधी तैयारी में वे भिन्न हैं।

8. मेमोरी संपीड़न स्टोर — RAM के अंदर एक और गंतव्य बनाना

Windows 10 से, मेमोरी दबाव होने पर मेमोरी मैनेजर कुछ मामलों में कम-इस्तेमाल पेजों को तुरंत डिस्क पर लिखने के बजाय RAM में संपीड़ित कर सकता है। संपीड़ित पेजों का वह संग्रह संपीड़न स्टोर है।

प्रारंभिक Windows 10 कार्यान्वयन में संपीड़न स्टोर System प्रक्रिया के Working Set में गिना जाता था, लेकिन वर्तमान Windows पर वह डिबगर प्रक्रिया सूचियों में समर्पित Memory Compression प्रक्रिया के रूप में दिखता है। इसलिए वर्तमान संपीड़न मात्रा जाँचते समय केवल System प्रक्रिया के Working Set का पीछा न करें। उद्देश्य स्वयं — अधिक ऐप भौतिक मेमोरी में रखना और डिस्क I/O घटाना — नहीं बदला।1011

फिर भी निम्न बिंदु याद रखें।

  • संपीड़ित पेज अभी भी RAM इस्तेमाल करते हैं
  • संपीड़न और विसंपीड़न की CPU लागत है
  • संपीड़न Commit वादा मिटाता नहीं
  • «हमेशा संपीड़ित करें, फिर पेज फ़ाइल» का निश्चित क्रम नहीं है
  • नीति पेज के प्रकार, दबाव और एक्सेस इतिहास से बदलती है

Task Manager का «उपयोग में (संपीड़ित)» यह नहीं कहता कि संपीड़न ने भौतिक मेमोरी पूरी खाली कर दी। संपीड़न स्टोर ऐसी सुविधा नहीं जो पेज फ़ाइल अनावश्यक बनाए; वह RAM और स्टोरेज के बीच I/O घटाने के लिए CPU इस्तेमाल करने वाला एक विकल्प जोड़ता है।

9. पेज फ़ाइल की वास्तविक भूमिका

पेज फ़ाइल की कम से कम तीन भूमिकाएँ हैं।

पेज फ़ाइल की तीन भूमिकाएँपेज फ़ाइल Commit Limit बढ़ाती है, कम-एक्सेस परिवर्तित निजी पेजों का बैकिंग स्टोर बनती है, और सिस्टम क्रैश डंप का पात्र बनती हैपेज फ़ाइलCommit Limit बढ़ाना(छत पक्ष का अंतर)परिवर्तित निजी पेजों का बैकिंग स्टोरसिस्टम क्रैश डंप का पात्र

चित्र 4: पेज फ़ाइल की भूमिका केवल «धीमी RAM» नहीं है। उपयोग 0 होने पर भी वह छत और डंप सहारा देती है।

9.1. Commit Limit बढ़ाना

सिस्टम का Commit Limit मोटे तौर पर RAM प्लस सभी पेज फ़ाइलों के योग से तय होता है। बिना पेज फ़ाइल Commit Limit स्थापित RAM से थोड़ा छोटा स्तर तक गिरता है। जब Commit Total छत तक पहुँचता है, नया Commit विफल होता है और असामान्य ऐप समाप्ति या सिस्टम समस्या तक जा सकता है।4

यह «अभी pagefile.sys में कितने GB लिखे हैं» से अलग बात है। पेज फ़ाइल Commit वादे को सहारा देने वाला छत पक्ष का अंतर भी है।

9.2. परिवर्तित निजी पेज सहारा देना

अगर कम-एक्सेस परिवर्तित निजी पेज पेज फ़ाइल से बैक हों, उन भौतिक पेजों को RAM से हटाकर अक्सर इस्तेमाल कोड और डेटा को दिया जा सकता है।4 पेज फ़ाइल बंद करने से ऐसे पेज RAM से निकालने का विकल्प घटता है। सिर्फ यह नहीं कहा जा सकता कि «तेज़ है क्योंकि पेज आउट नहीं होता»।

9.3. सिस्टम क्रैश डंप सहारा देना

सिस्टम क्रैश पर Memory.dmp बनाने के लिए ऐसी पेज फ़ाइल या समर्पित डंप फ़ाइल चाहिए जो चुनी डंप विधि सहारा दे सके।2 पूर्ण मेमोरी डंप, कर्नेल मेमोरी डंप और स्वचालित मेमोरी डंप आवश्यक मात्रा में भिन्न हैं।

जहाँ क्रैश जाँचे जाते हैं, केवल जगह बचाने के लिए पेज फ़ाइल मिटाना यह मतलब हो सकता है कि सबसे ज्यादा जरूरत पर सबूत न हों। संग्रह विधियों के लिए «An Introduction to Collecting Windows Crash Dumps - WER/ProcDump/WinDbg» भी देखें।

10. सही आकार एकसमान नहीं है

पेज फ़ाइल आकार «RAM का 1.5 गुना» जैसे निश्चित सूत्र अकेले से तय नहीं करना चाहिए। Microsoft बताता है कि उपयुक्त आकार निम्न दो बिंदुओं पर सिस्टम के अनुसार भिन्न है और सामान्यीकृत नहीं हो सकता।2

  1. शिखर System Commit Charge
  2. आपको चाहिए सिस्टम क्रैश डंप

व्यवहार में इस क्रम में सोचें।

10.1. सिस्टम-प्रबंधित को आधार मानकर शुरू करें

Windows डिफ़ॉल्ट सिस्टम-प्रबंधित है। वह स्थापित RAM, Commit माँग, क्रैश-डंप आवश्यकताओं आदि के अनुसार बढ़ता-घटता है। विशेष बाधा या माप परिणाम न हो तो यहीं से शुरू करना सुरक्षित चुनाव है।

10.2. प्रतिनिधि भार पर शिखर Commit मापें

PerfMon में निम्न काउंटर लंबे समय एकत्र करें।

  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\% Committed Bytes In Use
  • Memory\\Modified Page List Bytes
  • Paging File(*)\\% Usage
  • Memory\\Available MBytes
  • Memory\\Page Reads/sec
  • Memory\\Page Writes/sec

संग्रह अवधि में वास्तविक शिखर शामिल करें — माह-अंत प्रसंस्करण, बैकअप, बिल्ड, कई उपयोगकर्ता एक साथ, इत्यादि।

ऊँचा पेज-फ़ाइल उपयोग प्रतिशत अकेले संग्रहण-प्रदर्शन समस्या सिद्ध नहीं करता। हालाँकि छत से चिपकना अपर्याप्त क्षमता की चेतावनी है। साथ देखें कि Commit छत के पास है या नहीं, बहुत Modified प्रतीक्षा कर रहा है या नहीं, और डिस्क संतृप्त है या नहीं।2

10.3. पहले डंप आवश्यकता तय करें

तय करें कि पूर्ण मेमोरी डंप चाहिए, कर्नेल मेमोरी डंप काफी है, या समर्पित डंप फ़ाइल इस्तेमाल करेंगे। अगर निश्चित आकार पर बदलें, उसे न केवल शिखर Commit बल्कि डंप आवश्यकता भी पूरी करनी चाहिए।

11. स्वयं देखें

11.1. RAMMap में पेज सूचियाँ देखना

RAMMap व्यवस्थापक के रूप में शुरू करें और पहले Use Counts खोलें।7 देखने योग्य मद निम्न हैं।

  • Active
  • Standby
  • Modified
  • Modified no write
  • Free
  • Zeroed

Priority Summary से पुष्टि हो सकती है कि Standby प्राथमिकता से बँटा है। Processes प्रत्येक प्रक्रिया का Working Set दिखाता है; File Summary और File Details RAM में फ़ाइल डेटा का पीछा कराते हैं।

परीक्षण के रूप में काफी बड़ी स्थानीय फ़ाइल एक बार पढ़ें, पठन समाप्त करें, फिर Refresh। उस फ़ाइल के पेज File Summary या Standby पक्ष पर रह सकते हैं। वही फ़ाइल फिर पढ़ना अभी पुनः उपयोग न हुए पेज बिना डिस्क I/O, या कम I/O से बहाल कर सकता है। परिणाम मेमोरी दबाव, एंटीवायरस और फ़ाइल आकार से बदलते हैं, इसलिए एक संख्या-समूह से अधिक अवस्था-संक्रमण की दिशा देखें।

ध्यान दें कि RAMMap का Empty मेनू सिस्टम अवस्था कृत्रिम रूप से बदलता है। Standby को उत्पादन प्रदर्शन सुधार के रूप में साफ़ न करें; केवल अलग परीक्षण वातावरण पर इस्तेमाल करें।

11.2. Testlimit से Commit और Touch अलग करना

Testlimit Sysinternals उपकरण है जो मेमोरी, हैंडल, प्रक्रिया, थ्रेड आदि की संसाधन कमी अनुकरण करता है। पहले अपने पास बाइनरी पर निम्न चलाएँ और दिखाई गई संस्करण तथा उपयोग पुष्टि करें।

.\\testlimit64.exe -?

निम्न Testlimit v5.24 को लक्ष्य करता है। आधिकारिक v5.24 वाक्यविन्यास में -m [MB] निर्दिष्ट मात्रा मेमोरी आवंटित करता है, -d [MB] आवंटित और Touch, -e [seconds] आवंटन अंतराल है, और -c [count] आवंटन संख्या है। -c अंतिम निर्दिष्ट करें। अगर स्थानीय दिखता भिन्न हो, उस उपयोग को प्राथमिकता दें।12

फिर डिस्पोजेबल VM पर छोटा आज़माएँ।

# -m 64: 64 MiB आवंटित, -e 1: 1-सेकंड अंतराल, -c 8: 8 बार बाद रुकें
.\\testlimit64.exe -m 64 -e 1 -c 8

# वही संख्या और अंतराल, -d से प्रत्येक क्षेत्र Touch
.\\testlimit64.exe -d 64 -e 1 -c 8

चलते समय निम्न एक साथ रिकॉर्ड करें।

  • Task Manager का «Committed X/Y»
  • RAMMap का Active, Modified और Standby
  • Memory\\Committed Bytes
  • Memory\\Commit Limit
  • Memory\\Available MBytes
  • Memory\\Modified Page List Bytes

अगर वास्तव में Commit समाप्ति पुनरुत्पादित करें, होस्ट PC पर न करें; स्नैपशॉट वाले VM पर संख्या चरणबद्ध बढ़ाएँ। छत तक स्वतः आवंटित करने वाला रन स्क्रीन जमा सकता है, प्रक्रियाएँ असामान्य समाप्त कर सकता है, और लॉग खो सकता है। उद्देश्य OS अस्थिर करना नहीं; यह देखना है कि Commit Limit के पास पहुँचने पर नया Commit विफल होता है

12. व्यवहार में बचने योग्य चार गलत पठन

12.1. «Standby ऊँचा है, इसलिए मेमोरी लीक»

Standby पुनः उपयोग योग्य कैश है और Available में शामिल है। लीक का निर्णय इस से करें कि भार समाप्त होने के बाद भी प्रक्रिया-निजी Commit आधार रेखा और आवंटन विवरण बढ़ते रहते हैं या नहीं।

12.2. «Working Set काटना लीक ठीक कर देगा»

ट्रिम केवल निवास बदलता है; वह Commit या वर्चुअल आवंटन मुक्त नहीं करता। पुनः पहुँच पर पेज फ़ॉल्ट से लौटता है।

12.3. «पेज-फ़ाइल उपयोग 0 है, इसलिए अनावश्यक»

पेज फ़ाइल न केवल वर्तमान लेखन मात्रा बल्कि Commit Limit और क्रैश डंप सहारा देती है। केवल रोज़मर्रा उपयोग से हटाने का निर्णय शिखर अंतर और विफलता पर सबूत खो देता है।

12.4. «पहले मेमोरी संपीड़न, फिर हमेशा पेज फ़ाइल»

संपीड़न निश्चित धारावाहिक पाइपलाइन नहीं है। Windows पेज के प्रकार, संपीड़न दक्षता, CPU भार, मेमोरी दबाव और बैकिंग स्टोर मौजूद है या नहीं के अनुसार गतिशील चुनता है।

13. सारांश

  • PFN डेटाबेस वह खाता-पुस्तक है जो भौतिक पेज के स्वामित्व, संदर्भ, परिवर्तन और पेज-सूची अवस्था ट्रैक करती है।
  • Working Set छोड़ने वाला साफ़ पेज Standby पर रहता है और वही सामग्री चाहिए तो सॉफ्ट फ़ॉल्ट से लौट सकता है।8
  • गंदा पेज Modified पर प्रतीक्षा करता है और निजी हो तो पेज फ़ाइल में, मैप हो तो संबंधित फ़ाइल में वापस लिखा जाता है।3
  • Available Standby, Free और Zeroed का योग है; बड़ा Standby अकेले मेमोरी कमी नहीं है।1
  • मेमोरी संपीड़न I/O घटाने के लिए RAM में पेज संपीड़ित करता है, लेकिन Commit और पेज फ़ाइल की भूमिकाएँ नहीं मिटाता।10
  • पेज फ़ाइल Commit Limit, परिवर्तित निजी पेज और सिस्टम क्रैश डंप सहारा देती है।42
  • उपयुक्त आकार शिखर Commit और डंप आवश्यकताओं से तय होता है; एकसमान गुणक से तय नहीं हो सकता।2
  • Working Set ट्रिम और Standby साफ़ करना मेमोरी-लीक सुधार नहीं हैं।

जारी भाग 3, «सेक्शन ऑब्जेक्ट और कॉपी-ऑन-राइट: DLL और फ़ाइल मैपिंग वास्तव में क्या हैं»।

हम पीछा करते हैं कि Standby पर बचे फ़ाइल पेज और DLL कई प्रक्रियाओं से एक ही भौतिक पेज क्यों दिखते हैं।

संबंधित लेख

संबंधित परामर्श क्षेत्र

KomuraSoft LLC Windows अनुप्रयोग मेमोरी दबाव, Commit समाप्ति, पेजिंग, Working Set वृद्धि और क्रैश-डंप संग्रह डिज़ाइन की जाँच करता है।

संदर्भ लिंक

  1. Microsoft Learn, MEMORYSTATUSEX structure. इस पर कि ullAvailPhys वह भौतिक मेमोरी है जिसे डिस्क पर लिखे बिना तुरंत पुनः उपयोग किया जा सकता है, और वह Standby, Free तथा Zeroed सूचियों का योग है।  2 3

  2. Microsoft Learn, How to determine the appropriate page file size for 64-bit versions of Windows. इस पर कि उपयुक्त आकार शिखर Commit और क्रैश-डंप आवश्यकताओं पर निर्भर है और सामान्यीकृत नहीं हो सकता; Modified सूची, पेज-फ़ाइल उपयोग, संबंधित काउंटर और सिस्टम-प्रबंधित पेज फ़ाइल।  2 3 4 5 6 7 8

  3. Microsoft Learn, Data corruption on IO write. इस पर कि Modified Page Writer मेमोरी मैनेजर का सिस्टम वर्कर है जो पेज फ़ाइल से बैक गंदे पेज स्कैन कर लिखता है।  2 3

  4. Microsoft Learn, Introduction to page files. इस पर कि पेज फ़ाइल कम-एक्सेस परिवर्तित पेज RAM से निकालती है, Commit Limit बढ़ाती है, और सिस्टम क्रैश डंप सहारा देती है।  2 3 4

  5. Microsoft Learn, !pfn (WinDbg). इस पर कि निर्दिष्ट PFN प्रविष्टि की अवस्था, संदर्भ, PTE पता आदि दिखाए जा सकते हैं। 

  6. Microsoft Learn, !memusage (WinDbg). इस पर कि भौतिक-मेमोरी उपयोग तथा Zeroed, Free, Standby, Modified और Active जैसी पेज अवस्थाएँ जोड़ी जा सकती हैं। 

  7. Microsoft Learn, RAMMap - Sysinternals. इस पर कि RAMMap के Use Counts, Processes, Priority Summary, Physical Pages, File Summary और File Details भौतिक-मेमोरी उद्देश्य और पेज सूचियाँ दिखाते हैं।  2

  8. Microsoft Learn, Working Set. इस पर कि मेमोरी मैनेजर उपलब्ध मेमोरी बनाने के लिए Working Set ट्रिम करता है, और Transition या दूसरी प्रक्रिया के Working Set में बचे पेज सॉफ्ट फ़ॉल्ट से हल हो सकते हैं।  2

  9. Microsoft Learn, FileIo_Name class. इस पर कि ETW File I/O घटनाओं में FileObject और FileName होते हैं, ताकि FileObject को Disk I/O घटनाओं से मिलाकर लक्ष्य फ़ाइल का I/O पहचाना जा सके। 

  10. Windows Insider Blog, Announcing Windows 10 Insider Preview Build 10525. प्रारंभिक Windows 10 संपीड़न-स्टोर कार्यान्वयन पर, जिसने RAM में संपीड़ित पेज संग्रह System प्रक्रिया के Working Set में रखा और डिस्क लेखन घटाया।  2

  11. Microsoft Learn, Find Process ID (PID) in Windows. वर्तमान Debugging Tools for Windows प्रक्रिया-सूची उदाहरणों पर, जिनमें System के नीचे अलग PID वाली Memory Compression प्रक्रिया दिखती है। 

  12. Microsoft Learn, Testlimit - Sysinternals. Testlimit v5.24 आधिकारिक वाक्यविन्यास पर, जिसमें -m मेमोरी आवंटित करता है, -d आवंटित और Touch, -e आवंटन अंतराल है, और -c आवंटन संख्या, -c अंतिम निर्दिष्ट। 

निकटवर्ती विषयों में गहराई से जाने के लिए समान टैग वाले नवीनतम लेख।

Windows मेमोरी की गहराई (भाग 1) — वह क्षण जब आभासी पता भौतिक RAM बन जाता है: शुरू से अंत तक page fault

यह लेख VirtualAlloc, VAD, पेज टेबल, TLB, demand-zero और hard fault को जोड़कर उस क्षण को समझाता है जब किसी आभासी पते को भौतिक RAM मिलती है।

Windows मेमोरी की गहराई (भाग 3) — सेक्शन ऑब्जेक्ट और कॉपी-ऑन-राइट: DLL और फ़ाइल मैपिंग वास्तव में क्या हैं

यह लेख सेक्शन ऑब्जेक्ट, इमेज और डेटा मैपिंग, साझा कैश तथा कॉपी-ऑन-राइट को जोड़कर बताता है कि DLL और साझा मेमोरी भौतिक पृष्ठ कैसे साझा करत...

Windows वर्चुअलाइज़ेशन की गहराई (भाग 3) — सेकंडों में बूट होने वाली वर्चुअल मशीनें: WSL2, Windows Sandbox और कंटेनर इतने हल्के क्यों हैं

WSL2 और Windows Sandbox सेकंडों में शुरू होकर इतने हल्के क्यों लगते हैं? यह लेख डायनामिक बेस इमेज और डायरेक्ट मैप से डायनामिक मेमोरी आवंट...

Windows वर्चुअलाइज़ेशन की गहराई (भाग 2) — वह मेमोरी जिसे कर्नेल भी नहीं देख सकता: VBS, HVCI और Credential Guard कैसे काम करते हैं

संगत हार्डवेयर पर क्लीन इंस्टॉल पर VBS डिफ़ॉल्ट से सक्षम होता है और हाइपरवाइज़र तथा SLAT से कर्नेल से मज़बूत अलगाव बनाता है। यह लेख VTL, ...

Windows वर्चुअलाइज़ेशन की गहराई (भाग 1) — आपका Windows वास्तव में कहाँ चल रहा है? हाइपरवाइज़र और पार्टीशन

जब आप Hyper-V सक्षम करते हैं, तो होस्ट Windows स्वयं रूट पार्टीशन के रूप में हाइपरवाइज़र के ऊपर चलता है। यह लेख VT-x, SLAT और VMBus की भू...

ये पृष्ठ विषय को सेवाओं और निर्णयों के व्यापक संदर्भ में रखते हैं।

यह लेख निम्नलिखित सेवाओं से सीधे जुड़ा है।

अक्सर पूछे जाने वाले प्रश्न

इस लेख के विषय पर परामर्श में अक्सर पूछे जाने वाले प्रश्न।

क्या पेज Working Set छोड़ते ही पेज फ़ाइल में लिख दिया जाता है?
नहीं। अपरिवर्तित पेज अपनी सामग्री के साथ Standby में जाता है और तुरंत पुनः उपयोग योग्य कैश बन जाता है। परिवर्तित पेज Modified में जाता है, और आवश्यकतानुसार पेज फ़ाइल या संबंधित फ़ाइल में वापस लिखे जाने के बाद Standby जैसे पुनः उपयोग योग्य अवस्था में आगे बढ़ता है।
क्या Task Manager का Available Standby मेमोरी शामिल करता है?
हाँ। Windows जो उपलब्ध भौतिक मेमोरी बताता है वह Standby, Free और Zeroed का योग है। Standby अभी भी पुरानी सामग्री रखता है, लेकिन क्योंकि जरूरत पड़ने पर उसे तुरंत दूसरे काम के लिए पुनः उपयोग किया जा सकता है, उसे उपलब्ध मेमोरी गिना जाता है।
क्या पेज फ़ाइल में लेखन तभी शुरू होता है जब RAM पूरी तरह खत्म हो जाए?
नहीं। Windows Modified सूची और उपलब्ध मेमोरी की स्थिति के अनुसार कम-एक्सेस वाले परिवर्तित पेज पृष्ठभूमि में वापस लिखता है। यह ऐसा सरल तंत्र नहीं है जो पूर्ण समाप्ति की प्रतीक्षा करे और फिर सब कुछ एक साथ निकाल दे।
क्या पेज फ़ाइल बंद करने से Windows तेज़ हो जाता है?
सामान्य नियम के रूप में यह नहीं कहा जा सकता। बंद करने से Commit Limit गिरता है, कम-एक्सेस वाले परिवर्तित पेज RAM से निकालना कठिन होता है, और सिस्टम क्रैश डंप भी प्रभावित होते हैं। आमतौर पर उसे सिस्टम-प्रबंधित छोड़ते हैं और शिखर Commit तथा डंप आवश्यकताओं को मापकर निर्णय लेते हैं।
अगर मेमोरी संपीड़न है तो क्या पेज फ़ाइल अनावश्यक है?
वह अनावश्यक नहीं हो जाती। संपीड़न स्टोर I/O घटाने के लिए RAM में पेज संपीड़ित करता है, लेकिन संपीड़ित पेज अभी भी भौतिक मेमोरी इस्तेमाल करते हैं और Commit गारंटी की जगह नहीं लेते। संपीड़न और पेज आउट के बीच चुनाव मेमोरी मैनेजर की गतिशील नीति है।

लेखक की प्रोफ़ाइल

लेख के लेखक का परिचय पृष्ठ।

Go Komura

KomuraSoft LLC के प्रतिनिधि

Windows सॉफ़्टवेयर विकास, तकनीकी परामर्श और बग जाँच में विशेषज्ञ, विशेष रूप से मौजूदा सिस्टम वाली परियोजनाओं और पुनरुत्पादन में कठिन बग में।

सार्वजनिक लिंक

ब्लॉग पर लौटें