Windows हाइबरनेशन फ़ाइल में पूरी रैम को इतनी तेज़ी से कैसे डंप कर सकता है?


64

मैं एक लेख के माध्यम से जा रहा था जिसने माइक्रोसॉफ्ट विंडोज में हाइबरनेशन प्रक्रिया को समझाया। मुख्य बिंदु जो मैं इससे बाहर निकलता हूं वे हैं

  1. विंडोज पूरे रैम ( hiberfil.sysफाइल को प्रोसेस करने के बाद) को डंप करता है ।
  2. बूट अप के दौरान, हाइबरनेशन फ़ाइल को पढ़ा जाता है, और सामग्री रैम में लोड होती है।

मेरा प्रश्न यह है कि जब मैं आमतौर पर आकार की एक फाइल कॉपी कर रहा हूं, तो कहें कि 1 जीबी, इसे पूरा होने में लगभग 2 मिनट लगते हैं

हालाँकि, जब Windows हाइबरनेशन फ़ाइल (हाइबरनेशन प्रक्रिया के दौरान) लिख रहा होता है, तो पूरी प्रक्रिया में 10-15 सेकंड लगते हैं। लेखन की गति में इतना अंतर क्यों है?

मेरी रैम का साइज 4 जीबी है। (मैं तेज बूट तकनीक के बारे में बात नहीं कर रहा हूं।)

मानक:

  1. डिस्क 1 से डिस्क 2 (बाहरी) में 1 जीबी फाइल कॉपी करना: 2.3 मिनट।
  2. सिस्टम को हाइबरनेट करना: 15 सेकंड।

3
मुझे इसका उत्तर नहीं पता है, लेकिन मैं शर्त लगाता हूं कि यदि आपने पुस्तक " विंडोज 13: स्टार्टअप और शटडाउन" की जांच की है, तो यह आपको बताएगा (यदि मेरे पास पुस्तक है तो मैं खुद जांच करूंगा)।
स्कॉट चैंबरलेन

2
यह अच्छा प्रश्न है। जब हाइबरनेशन पहली बार 1998 में लागू किया गया था, तो यह लगभग इतना तेज़ नहीं था।
गाबे

22
@ कोड: NT सिस्टम यह सुनिश्चित करता है कि hyberfil.sys के पास पूर्ण स्थान आबंटित हो और पूरी फाइल खंडित न हो। उस स्थिति में ऑपरेशन के दौरान हार्ड ड्राइव पर कोई सिर नहीं होता है। तो आपको 150Mo / s जैसी प्रभावी गति मिलेगी। आपने जो कहा, उस पर आप फिर से गौर कर सकते हैं fsutil
user2284570

3
बाहरी डिस्क आमतौर पर आंतरिक डिस्क की तुलना में धीमी होती है।
हैरी जॉनसन

2
@ EricLippert - यह सबसे निश्चित रूप से रैम के सभी को संग्रहीत नहीं करता है, लेकिन फिर भी यह व्याख्या नहीं करता है। मेरे पास नियमित रूप से कुछ गीगाबाइट सक्रिय रैम हैं जिन्हें संग्रहीत करने की आवश्यकता है (VS2013 या एक्लिप्स + कुछ और चीजें बहुत राम लेती हैं), और वे उस गति से संग्रहीत होते हैं जो मुझे अपने गैर-एसएसडी के सैद्धांतिक रूप से लिखने की गति से भी अधिक लगता है चलाना।
डावोर

जवाबों:


45

यह शायद एक तीन गुना जवाब है।

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

दूसरी बात यह होगी कि हाइबरनेशन को उन मेमोरी पेजों को सहेजने की जरूरत नहीं होगी जो या तो स्वैप फाइल के बाहर हैं या उपयोग में नहीं हैं (यह स्वैप फाइल को आक्रामक रूप से भरने और डेटा को मेमोरी में रखने का एक कारण होगा ) ।

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

इसके अतिरिक्त, वर्तमान हार्ड ड्राइव काफी तेज हैं। 100 एमबी / एस के क्रम में एक निरंतर लिखने वाली एक डिस्क के साथ आप एक मिनट के अंदर 4 जीबी रैम (असम्पीडित) लिख सकेंगे। चूंकि सभी उपयोगकर्ता प्रक्रियाओं को निलंबित करने से पहले हाइबरनेशन को अंतिम चीज के रूप में किया जा सकता है और सीपीयू को निलंबित करने से पहले ओएस में आमतौर पर डिस्क की पूर्ण लेखन गति होगी। यह एक ऐसी चीज़ है जो आपके साधारण बेंचमार्क में नहीं होगी, और डिस्क से डिस्क पर कॉपी करना संभवतः रैम को डिस्क से लिखने की तुलना में धीमा होगा।

इन चीजों को मिलाएं और हाइबरनेशन फ़ाइल को लिखे जाने वाले डेटा की मात्रा 1 जीबी के आदेश की तुलना में काफी कम हो सकती है, और संभवतः 10 सेकंड के भीतर एक बड़े निरंतर ब्लॉक को लिखा जाएगा।


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

2
जो पृष्ठ गंदे नहीं होते हैं, वे "स्वैप फ़ाइल के लिए पृष्ठांकित" का एक अधिक सामान्य विवरण है, इसमें निष्पादक शामिल होंगे। (चूंकि निष्पादन योग्य डिस्क पर कुछ खंडित होते हैं, इसलिए यह धीमा हो सकता है।) इसके अलावा, क्लीन फ़ाइल बफ़र्स को संभवतः केवल एक मेमोरी मैप्ड फ़ाइल का हिस्सा नहीं होने पर भी गिराया जा सकता है।
पॉल ए। क्लेटन

3
@ user2284570 मैं उस उत्तर से जुड़े दस्तावेज़ से "विंडोज़ मेमोरी की सामग्री को डिस्क पर कॉपी करके हाइबरनेशन का समर्थन करता है। सिस्टम डिस्क पर उन्हें संरक्षित करने से पहले मेमोरी सामग्री को संपीड़ित करता है, जो आवश्यक डिस्क स्थान को भौतिक मेमोरी की कुल मात्रा से कम कर देता है। सिस्टम पर "।
Mokubai

4
@ user2284570: ऐसा इसलिए है क्योंकि सबसे खराब स्थिति 1: 1 संपीड़न है। विंडोज को यह सुनिश्चित करना है कि किसी भी संभावित मेमोरी कॉन्फ़िगरेशन के लिए hyberfil.sys में पर्याप्त (आरक्षित) स्थान है - भले ही उसे किसी विशेष हाइबरनेशन के लिए केवल RAM के दसवें हिस्से की आवश्यकता हो। इसमें जोड़ें कि रैम उपयोग का एक सभ्य हिस्सा मेमोरी (निष्पादक, संसाधन ...) में भरी हुई फ़ाइलें हैं, लेकिन फिर भी एचडीडी से मैप किया जाता है, और आप वास्तव में बहुत सारे लेखन को बचा सकते हैं। रैम में क्रिप्टो-यादृच्छिक डेटा के 4 GiB उत्पन्न करने के लिए एक कार्यक्रम है, और हाइबरनेशन में काफी लंबा समय लगता है - और फिर भी, इसमें से कुछ स्वैप में हो सकता है।
लुआॅन

3
@ user2284570: फ़ाइल यह सुनिश्चित करने के लिए बड़ी है कि सभी मेमोरी को स्टोर करने के लिए डिस्क पर जगह हो। उस स्थान का सभी वास्तव में हाइबरनेशन में उपयोग नहीं किया जाता है। कभी-कभी फ़ाइल 7% संपीड़ित मेमोरी सामग्री, 93% कबाड़ (कहना) होगी।
11'15

31

सबसे पहले, रैम की मात्रा जिसे सहेजना आवश्यक है, आश्चर्यजनक रूप से छोटा है। वास्तव में, केवल मैप किए गए गंदे पृष्ठों ("आलसी राइटबैक") के सेट को फ्लश करने की आवश्यकता होती है, साथ ही सभी निजी पृष्ठ जिन्हें लिखा गया है और निष्पादन योग्य कोड को लिखा जाना चाहिए।

  • निष्पादक का .text खंड हमेशा फ़ाइल मैपिंग द्वारा समर्थित है। यह कम से कम कुछ DLL (लेकिन सभी के लिए सही नहीं है, यह इस बात पर निर्भर करता है कि उन्हें स्थानांतरित करने की आवश्यकता है)।
  • फ़ाइल मैपिंग द्वारा समान रूप से समर्थित मेमोरी को त्याग दिया जा सकता है (माना कि यह CoW या RW और गंदा नहीं है)।
  • आलसी राइटबैक अभी भी घटित होगा, लेकिन इसके अलावा, कैश को त्याग दिया जा सकता है।
  • स्मृति जो आवंटित की गई है, लेकिन उसे नहीं लिखा गया है (आमतौर पर एप्लिकेशन डेटा का अधिक से अधिक हिस्सा!) शून्य पृष्ठ द्वारा समर्थित है और इसे खारिज किया जा सकता है।
  • मेमोरी पेजों का एक बड़ा हिस्सा जो "स्टैंडबाय" स्थिति पर है (विंडोज पर वास्तविक प्रति-प्रक्रिया निवासी काम कर रहा है , यह आश्चर्यजनक रूप से छोटा है, मात्र 16MB है) को किसी बिंदु पर पृष्ठभूमि में पेज फ़ाइल में कॉपी किया जाएगा और इसे छोड़ दिया जा सकता है ।
  • स्मृति के क्षेत्र जिन्हें कुछ उपकरणों द्वारा मैप किया जाता है जैसे ग्राफिक्स कार्ड (संभवतः) को सहेजने की आवश्यकता नहीं है। उपयोगकर्ताओं को कभी-कभी आश्चर्य होता है कि वे 8GiB या 16GiB को कंप्यूटर में प्लग करते हैं, और 1GiB या 2GiB बिना किसी स्पष्ट कारण के केवल "चले गए" हैं। प्रमुख ग्राफिक्स एपीआई के लिए जरूरी है कि बफर कंटेंट को "कुछ शर्तों के तहत" अमान्य (बिना इसका मतलब बताए) बनने में सक्षम किया जाए। इस प्रकार यह उम्मीद करना अनुचित नहीं है कि ग्राफिक्स चालक द्वारा जो मेमोरी पिन की जाती है वह अभी भी खारिज कर दी गई है। स्क्रीन सभी के बाद, वैसे भी अंधेरे में जा रही है।

दूसरा, एक फ़ाइल की प्रतिलिपि बनाने के विपरीत, रैम पृष्ठों के सेट को डंप करना, जिसे डिस्क को सहेजने की आवश्यकता होती है, ड्राइव के दृष्टिकोण से एक एकल अनुक्रमिक, सन्निहित लेखन है। Win32 API यहां तक ​​कि इस ऑपरेशन के लिए एक उपयोगकर्ता-स्तरीय फ़ंक्शन को भी उजागर करता है । इकट्ठा लिखना सीधे हार्डवेयर द्वारा समर्थित है और डिस्क जितनी तेजी से काम करता है शारीरिक रूप से डेटा को स्वीकार करने में सक्षम है (नियंत्रक सीधे एमएएमए के माध्यम से डेटा खींच लेगा)।
इसे काम करने के लिए कई पूर्व शर्त हैं (जैसे संरेखण, ब्लॉक आकार, पिनिंग), और यह कैशिंग के साथ अच्छी तरह से नहीं खेलता है और "आलसी राइटबैक" जैसी कोई चीज नहीं है (जो सामान्य ऑपरेशन के लिए एक बहुत ही वांछनीय अनुकूलन है) )।
यही वजह है कि हर लेखन नहींहर समय उसी तरह काम करता है। हालाँकि, जब सिस्टम हाइबरनेशन फ़ाइल को सहेज रहा है, तो सभी पूर्व शर्त स्वचालित रूप से पूरी हो जाती हैं (सभी डेटा पृष्ठ-संरेखित, पृष्ठ-आकार और पिन किए गए हैं) और कैशिंग केवल अप्रासंगिक हो गया है क्योंकि कंप्यूटर एक पल में बंद होने जा रहा है।

तीसरा, एकल सन्निहित लेखन करना कताई डिस्क और ठोस राज्य डिस्क दोनों के लिए बहुत अनुकूल है

स्वैप फ़ाइल और हाइबरनेशन फ़ाइल आमतौर पर डिस्क पर निर्मित और आरक्षित कुछ शुरुआती फाइलें होती हैं। वे आम तौर पर एक है, ज्यादातर दो टुकड़ों में। इस प्रकार, जब तक कि सेक्टर क्षतिग्रस्त नहीं होते हैं और डिस्क को भौतिक क्षेत्रों को पुनः प्राप्त करना पड़ता है, एक तार्किक अनुक्रमिक लेखन कताई डिस्क पर एक भौतिक अनुक्रमिक लेखन का अनुवाद करता है ।

जब अनुक्रमिक, सन्निहित डेटा की एक बड़ी मात्रा लिखी जा रही है, तो डिस्क पर कोई रीड-मॉडिफ़ाइड-राइट ऑपरेशन आवश्यक नहीं है। यह समस्या एक कताई हार्डडिस्क पर कम स्पष्ट होती है जो एकल क्षेत्रों को लिख सकती है जो काफी छोटे होते हैं (बशर्ते कि आप एकल बाइट्स नहीं लिखते हैं, जो आमतौर पर कैशिंग रोकता है, डिवाइस को मूल सामग्रियों को लाने और संशोधित संस्करण वापस लिखने की आवश्यकता नहीं है।) ।
हालाँकि, यह कुछ ऐसा है जो SSD पर बहुत ध्यान देने योग्य है जहाँ हर लिखने का अर्थ है कि उदाहरण के लिए 512kB ब्लॉक (यह एक सामान्य संख्या है, लेकिन यह बड़ा हो सकता है) को नियंत्रक द्वारा पढ़ा और संशोधित किया जाना चाहिए, और एक अलग पर वापस लिखा जाना चाहिए। ब्लॉक। जबकि आप सिद्धांत रूप में लिख सकते हैं (लेकिन अधिलेखित नहीं) फ्लैश डिस्क पर छोटी इकाइयां, आप कभी भी केवल विशाल ब्लॉक मिटा सकते हैं, यह हार्डवेयर कैसे काम करता है। यही कारण है कि एसएसडी विशाल अनुक्रमिक लेखन पर इतना बेहतर किराया देते हैं।


यहां तक ​​कि अगर एक डीएलएल को स्थानांतरित किया जाता है, तो इसे वापस लाने के लिए केवल एक चीज की जरूरत होती है, वह है स्थानांतरित पता। स्थानांतरण एक निर्धारक प्रक्रिया है और इसे दोहराया जा सकता है।
MSalters

"लिखो"? क्या आपका मतलब है "बल्कि लिखो"?
पीटर मोर्टेंसन

3
@PeterMortensen: नहीं, मेरा वास्तव में मतलब है कि इकट्ठा लिखना (बिखरे हुए पढ़ने के विपरीत)। इसका अर्थ है कि एक से अधिक स्थानों से डेटा एकत्र करते हुए एक ही फाइल पर लिखना । आप संरचनाओं की एक सरणी की आपूर्ति करते हैं, जिनमें से प्रत्येक में एक प्रारंभ पता और एक लंबाई (सख्त संरेखण आवश्यकताओं के साथ) शामिल है। ऑपरेटिंग सिस्टम कंट्रोलर के पास जाता है, और हार्डवेयर बाकी काम करता है।
डेमन

1
@MSalters: लेकिन स्थानांतरण पृष्ठ की एक निजी प्रति बनाता है, और फिर यह निर्धारित करना बेहद कठिन है कि क्या कोई अन्य संशोधन निजी प्रति के लिए किया गया है। ऐसे मैपिंग के साथ जिसका फ़िक्सअप की आवश्यकता नहीं है, और कॉपी-ऑन-राइट का उपयोग करें। यदि अन्य संशोधन किए जाते हैं, तो एक निजी प्रति होगी। यदि नहीं, तो पृष्ठ अभी भी CoW के लिए कॉन्फ़िगर किया जाएगा।
बेन वोइगट

1
@MSalters यह एक नियतात्मक प्रक्रिया हो सकती है, लेकिन इसका अर्थ यह नहीं है कि लिंक के रूप में सॉफ्टवेयर स्टैक की समान परत पर हाइबरनेशन कोड काम करता है। यदि हाइबरनेशन कर्नेल परत पर है और लिंकिंग उपयोगकर्ता परत है, तो हाइबरनेशन लिंकर क्या करता है इसके बारे में कोई धारणा नहीं बना सकता है।
कैस्परल्ड

10

यह पूरे रैम को हाइबरनेट समय पर डंप नहीं करता है।

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

इसलिए इसे केवल 4GB का एक छोटा सा हिस्सा लिखना होगा और यह 10-15 के दशक में किया जा सकता है।

से माइक्रोसॉफ्ट :

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


2

उपरोक्त सभी के अलावा, मुझे लगता है कि खेल में कुछ अन्य कारक हैं।

एक यह है कि फ़ाइल की प्रतिलिपि बनाते समय, फ़ाइल को पढ़ना और लिखना होता है; हाइबरनेशन में केवल फ़ाइल को लिखा जाना आवश्यक है। यह, पहले से ही स्मृति में है!

इस से संबंधित, जब कोई फ़ाइल पढ़ता है और उसी समय लिखता है, तो मेमोरी को बचाने के लिए, प्रक्रिया यह है: एक चंक पढ़ें, एक चंक लिखें, निर्देशिका को अपडेट करें (नया आकार दिखाने के लिए); एक हिस्सा पढ़ें, एक हिस्सा लिखें, निर्देशिका को अपडेट करें।

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

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


यह एक बड़ा अंतर बनाने के लिए बाध्य है !
को ऑर्बिट

@LightnessRacesinOrbit: सीपीयू विवाद पर शायद ही कोई फर्क पड़ेगा। I / O विवाद का अभाव एक बड़ी बात है, लेकिन यह जवाब पहले ही कह चुका है कि प्रदर्शन को मारना, और मांगना, समग्र बैंडविड्थ की कमी नहीं, I / O विवाद का मुख्य मुद्दा है।
बेन वोइगट

@BenVoigt: हाँ, मैं सहमत हूँ। और जब आपके पास 40 प्रक्रियाएं होती हैं, तो सभी डिस्क पर सामान करने की कोशिश करते हैं, जो डिस्क की मांग को काफी हद तक बढ़ाता है। (tl; डॉ। मैं CPU विवाद के बारे में बात नहीं कर रहा था)
ऑर्बिट

@LightnessRacesinOrbit: ऐसा लगता है ... सामान्य ऑपरेशन के दौरान भी असामान्य है (हाइबरनेशन में प्रवेश करने और छोड़ने के अलावा सब कुछ)। मुझे पता है कि जब मैं डिस्क को मारते हुए एक बैकग्राउंड टास्क को पकड़ता हूं, तो मैं चूसने वाले को अनइंस्टॉल कर देता हूं और इसे किसी ऐसी चीज से रिप्लेस कर देता हूं, जब मैं डिस्क को एक्सेस करता हूं, जब मैं उससे कुछ मांगता हूं।
बेन वोइगट

@BenVoigt: इसकी संभावना कम ही लगती है। डेमन लॉगिंग सबसे स्पष्ट प्रतिधारण है, इसके बाद ntpd के बहाव फ़ाइल अपडेट जैसी चीजें होती हैं। मैं यह दावा नहीं कर रहा हूं कि उन उदाहरणों में से किसी एक का यहां बड़ा प्रभाव है, लेकिन मुझे नहीं लगता कि यह उचित है कि कोई पृष्ठभूमि कार्यों को डिस्कवरी को छूने के लिए कोई पृष्ठभूमि कार्य न करें।
लाइटवेट दौड़ ऑर्बिट

0

यह शायद इसलिए है क्योंकि RAM में हार्ड डिस्क की तुलना में बहुत तेज इनपुट / आउटपुट स्पीड है, इसलिए RAM उसमें सामान को आउटपुट कर सकती है जितनी जल्दी हार्ड डिस्क में पढ़ सकता है।

फ़ाइलों की प्रतिलिपि बनाते समय, आप विभिन्न कारकों द्वारा भी सीमित होते हैं - डिस्क की गति, यदि उसे उसी डिस्क पर पढ़ना है और बाहर निकलना है, तो कनेक्शन की सीमित गति (यदि बाहरी ड्राइव करने के लिए) है, तो इसकी जाँच करना किसी भी चीज पर ओवरराइटिंग नहीं है


9
लेकिन अभी भी OS को डिस्क पर 4GB RAM डेटा लिखने की आवश्यकता है जो I / O अड़चन द्वारा शासित है
कोडर

इसके अलावा अनुकूल मान मानने से यह पता चलता है कि हाइबरनेटिंग के दौरान मेरी डिस्क की लिखने की गति 40 एमबी / एस से ~ 260 एमबी / एस हो जाती है। क्या यह सही हो सकता है?
कोडर

1
संभवतः - इसमें I / O अड़चन बहुत अधिक नहीं होनी चाहिए क्योंकि इसमें केवल डेटा लिखने की आवश्यकता होती है (संभवत: इसमें कुछ है इसलिए यह जानता है कि यह सामान को अधिलेखित नहीं करेगा और डेटा को कहां रखा जाएगा ताकि यह न हो डिस्क को बहुत अधिक पढ़ने की आवश्यकता है)। मेरे (linux dual booted) लैपटॉप पर मैं उपयोग कर सकता हूं dd if=/dev/zero of=/tmp/output.img bs=8k count=256kऔर प्राप्त कर सकता हूं 1862606848 bytes (1.9 GB) copied, 1.81605 s, 1.0 GB/s, इसलिए यह संभव प्रतीत होता है (मैं जोड़ दूंगा कि विंडोज़ की नकल करने वाली फाइलें वैसे भी अनावश्यक रूप से लंबी लगती हैं)।
विल्फ

स्थानीय इंटरनेट पर फ़ाइलों की प्रतिलिपि बनाते समय आप बहुत तेज़ स्थानांतरण प्राप्त कर सकते हैं। इसके अलावा रैम में सभी सामानों को कॉपी करने की आवश्यकता नहीं हो सकती है - रैम में कुछ डेटा को कैश किया जा सकता है और हाइबरनेशन से जागने पर सिस्टम को पुनर्स्थापित करने की आवश्यकता नहीं है।
विल्फ

मैंने सिर्फ अपने सिस्टम पर dd बेंचमार्क की कोशिश की। यह कभी भी 52 एमबी / एस से अधिक नहीं चला गया: / (पुरानी मशीन) हालांकि मेरा मानना ​​है कि "शायद कुछ जगह है इसलिए यह जानता है कि यह सामान को अधिलेखित नहीं करेगा और डेटा कहां डालना है, इसलिए इसे डिस्क को पढ़ने की आवश्यकता नहीं है बहुत अधिक " तेज गति के लिए कुंजी है।
कोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.