जब आपका कंप्यूटर हाइबरनेट करता है तो स्वैप में डेटा का क्या होता है?


12

जब कोई कंप्यूटर हाइबरनेशन मोड में जाता है, तो यह रैम की सामग्री को स्वैप स्पेस में सहेजता है ताकि यह फिर से शुरू हो सके जहां से वापस आने पर इसे छोड़ देता है।

तो, क्या होगा यदि आप वर्तमान में रैम की तुलना में अधिक मेमोरी का उपयोग कर रहे हैं। इस स्थिति में, कुछ डेटा जो अन्यथा रैम में होंगे उन्हें स्वैप करने के लिए सहेजा जाता है।

एक उदाहरण। एक कंप्यूटर में 1GB रैम और 1GB स्वैप स्पेस है। यह वर्तमान में सभी 100 एमबी रैम और 500 एमबी स्वैप का उपयोग कर रहा है। इस प्रकार, अपने राज्य को बचाने के लिए लगभग 1.4GB मेमोरी को याद रखना आवश्यक है। हालाँकि, स्वैप केवल 1GB का है।

इस मामले में क्या होगा?

~~ संपादित करें ~~

जैसा कि नीचे उत्तर दिया गया है, हाइबरनेट विफल रहता है। तो फिर एक अनुवर्ती सवाल:

जब यह विफल हो जाता है, तो त्रुटि कहां बताई गई है?

जवाबों:


11

यह हाइबरनेशन के कार्यान्वयन पर निर्भर करता है। भले ही आप प्रश्न को लिनक्स में प्रतिबंधित कर दें, लेकिन कार्यान्वयन समय के साथ विकसित हुआ है।

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

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

यदि आप पर्याप्त स्वैप स्थान नहीं है, तो आप आमतौर पर उम्मीद कर सकते हैं कि हाइबरनेशन विफल हो जाएगा: सिस्टम रैम की सामग्री (उपयोगी) को स्वैप में संग्रहीत करने का प्रयास करेगा, और जैसे ही यह पता चलता है कि पर्याप्त स्थान नहीं है, हाइबरनेशन प्रयास को निरस्त कर दिया जाता है (आमतौर पर कंसोल पर और सिस्टम लॉग में एक त्रुटि संदेश के साथ)। जहां तक ​​मुझे पता है, लिनक्स ने हमेशा ऐसा व्यवहार किया है (ऐसा नहीं है कि वास्तव में एक और समझदार व्यवहार है)।


1
मैंने एक वर्चुअलबॉक्स मशीन में यह कोशिश की और यह विफल हो गया, हालांकि इसने उपयोगकर्ता को कोई संदेश नहीं दिखाया (मैंने ubuntu 10.4 के साथ प्रयास किया)। इस त्रुटि की रिपोर्ट किस सिस्टम लॉग में होगी?
डेविड वनिल

3
@ डेविड: इसमें निश्चित रूप से कुछ होना चाहिए /var/log/kern.log। मुझे नहीं पता कि कंसोल पर संदेश की अनुपस्थिति इस विशेष कर्नेल संस्करण का एक quirk या जानबूझकर Ubuntu कॉन्फ़िगरेशन है (मुझे पता है कि उन्होंने जानबूझकर कुछ अन्य कंसोल आउटपुट को दबा दिया है)।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.