स्वैप मेमोरी क्या है?


26

मैं अपने कुछ डेटाबेस तालिकाओं को संग्रहीत करने के लिए RAM का उपयोग कर रहा हूं और अन्य हार्ड डिस्क में संग्रहीत हैं।

आज मुझे पता चला कि मेरी प्रक्रियाएँ स्वैप मेमोरी का उपयोग कर रही हैं। अब स्वैप मेमोरी क्या है और मैं कैसे पता लगा सकता हूं कि कौन सी प्रक्रिया स्वैप मेमोरी का उपयोग कर रही है और मैं इसे कैसे उपयोग करने से रोक सकता हूं?


क्या यह पता लगाने का कोई तरीका नहीं है कि कौन सी प्रक्रियाएं स्वैप मेमोरी का उपयोग कर रही हैं ???

उपयोग किए गए पृष्ठ फ़ाइल और पृष्ठ दोषों की मात्रा के लिए विंडोज़ कार्य प्रबंधक (या समान उपकरण) को देखें।

स्वैप एक प्रति-प्रक्रिया चीज नहीं है, यह पूरे ओएस के लिए है। "vmstat" आपको इस बारे में जानकारी दिखाएगा कि आप कितने स्वैप का उपयोग कर रहे हैं।
जॉकवे जूल

मैं लिनक्स पर काम नहीं करता हूँ

इस स्वैप उपयोग का कारण मिला ..... कोई मेरी साइट को पार्स करने की कोशिश कर रहा था, यही कारण है कि पूरे thng ws हमारी तरफ से बिना किसी कारण के हो रहे थे। आपके सभी उत्तरों के लिए धन्यवाद, इसने मेरी हमेशा बहुत मदद की :-)

जवाबों:


41

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

यदि आपका ऐप "स्वैप का उपयोग कर रहा है" है, तो आपको या तो कम मेमोरी का उपयोग करना होगा या अधिक रैम खरीदना होगा।

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


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


7

कंप्यूटर में एक निश्चित मात्रा में भौतिक मेमोरी होती है। लेकिन ज्यादातर समय हम अधिक चाहते हैं। इसलिए हम डिस्क पर कुछ मेमोरी स्वैप करते हैं।

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

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

इस प्रक्रिया का उपयोग कई स्तरों पर किया जाता है। तेजी से धीमी गति से एक सारांश:

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

3
cat /proc/pid/smaps

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

एक और उपाय आपके डेटाबेस को हैक करने का हो सकता है, इसलिए यह पृष्ठों को मेमोरी में लॉक कर देता है (मुझे पता है कि किया जा सकता है, लेकिन मैं आपको अभी नहीं बता सकता कि कैसे), लेकिन वैसे भी, यह ऐसा है कि आपका डेटाबेस स्वयं स्वैपिंग का उपयोग करेगा और फिर कैशिंग तंत्र।

यह जानने के लिए कि स्वैप क्या है और वर्चुअल मेमोरी कैसे काम करती है ... मैं आपको कुछ ऑपरेटिंग सिस्टम व्याख्यान पर एक नज़र डालने की सलाह दूंगा, शायद एमआईटी ओपन कोर्टवेयर मदद कर सकता है।


चूँकि कई linux डिस्ट्रोस पर डिफ़ॉल्ट कॉन्फिगरेशन मेमोरी को ओवरकम करने के लिए है, इसलिए "सबसे खराब" यह होगा कि OOM किलर प्रक्रियाओं को छीनना शुरू कर देगा, सबसे अधिक संभावना है कि DBMS (और RAM में संग्रहीत "तालिकाओं के साथ" जो शायद अच्छा नहीं है) चीज़)।
सिम्बियन

1

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

अद्यतन करें

यह जानने के लिए कि स्वैप स्पेस (या वर्चुअल मेमोरी) आप टास्क मनेर (CTRL + ALT + DEL) पर जा सकते हैं और VIEW -> COLUMNS -> VIRTUAL MEMORY से चालू कर सकते हैं। अब बस मेमोरी उपयोग और वर्चुअल मेमोरी के बीच अंतर की गणना करें। यहाँ भी एक निर्देश है कि अगर आप Vista चला रहे हैं तो इसे कैसे देखें: http://www.ehow.com/how_5067693_increase-swap-space.html


-1

स्वैप हार्ड डिस्क स्थान है जिसका उपयोग RAM के रूप में किया जाता है। यह (अपेक्षाकृत बोलने वाला) बहुत धीमा है, लेकिन कंप्यूटर को दुर्घटनाग्रस्त होने से रोकता है जब वे अधिक डेटा से निपटने की कोशिश कर रहे होते हैं तो उनकी रैम को संभाल सकते हैं।

स्वैप का उपयोग करने से प्रक्रियाओं को रोकने के लिए - अधिक रैम स्थापित करें।


1
यदि आप कोई अदला-बदली नहीं चाहते हैं, तो पृष्ठ फ़ाइल का उपयोग करना बंद करें। लेकिन अन्य समस्याओं की अपेक्षा करें।

1
यह। स्वैपिंग हार्डडिस्क से डेटा को भौतिक मेमोरी में स्थानांतरित कर रहा है । एक बार पढ़ा गया, जो सामान्य रूप से काफी तेज है।

@xtofl के उत्तर में स्वैपिंग, बस स्वैप विभाजन का उल्लेख नहीं था, और गेमकैट की टिप्पणी का आपके द्वारा कही गई बातों से कोई लेना-देना नहीं है? : पी
रैपिडवेब्स

-1

यदि आप नहीं चाहते कि आपकी प्रक्रियाएं स्वैप-मेमोरी का उपयोग करें, तो बस स्वैप मेमोरी को पूरी तरह से अक्षम कर दें। दुर्भाग्य से, यदि आप कभी भी मेमोरी से बाहर निकलते हैं, तो उपयोग के लिए कुछ मेमोरी खाली करने के लिए लिनक्स कर्नेल आपकी कुछ रनिंग प्रक्रियाओं को मार देगा।

यदि आपके पास आपके सिस्टम के लिए पर्याप्त रैम है, तो आप वास्तव में स्वैप मेमोरी के बिना जा सकते हैं।

मेरे पास 768Mb RAM वाला एक लैपटॉप है जो स्वैप मेमोरी का उपयोग नहीं करता है। यह मेरी जरूरतों के लिए काफी अच्छा है। मेरे पास 256Mb RAM वाला सर्वर है और यह स्वैप मेमोरी का उपयोग नहीं करता है। यह OpenVZ वर्चुअलाइजेशन का उपयोग करके 8 वर्चुअल सर्वर चला रहा है, या तो समस्याओं के बिना।

यदि आपको स्वैप-मेमोरी की आवश्यकता है, तो यह आपके ऊपर है।


आप केवल 256 मेगाबाइट रैम के साथ मशीन पर 8 वीएम कैसे चला रहे हैं ?!?
वॉरेन

यह VZ के साथ संभव है क्योंकि RAM पूरी तरह से विभाजित नहीं है क्योंकि आम पुस्तकालयों को VMs, या कुछ और के प्रभाव में साझा किया जाता है। तो, 8 x 64M जरूरी 512M नहीं है। :)
sybreon

फिर भी - कैसे अंतर्निहित डिवाइस stably चल रहा है?
वॉरेन

निष्क्रिय कार्यक्रमों को स्वैप करके, आपके पास फ़ाइल कैशिंग के लिए अधिक मेमोरी है। और वह चीजों को गति देता है। यह एक बार पढ़ा गया आम तौर पर काफी जल्दी होता है और कुल मिलाकर नगण्य प्रभाव पड़ता है। इसका उपयोग केवल तब नहीं किया जाता है जब आप अपनी उपलब्ध रैम के संबंध में सीमा से बाहर जाते हैं। मैंने 16GB RAM वाली मशीनों को कई बार SWAP का उपयोग करते देखा है।
रैपिडवेब्स

इसके अलावा, मैं एक डेटाबेस सर्वर पर SWAP को अक्षम करने की अनुशंसा नहीं करूंगा। जब OOM एक साधारण रात्रिकालीन बैकअप ऑपरेशन, या कुछ इसी तरह बैक-एंड को मारता है, तो उसके ग्राहक या वेब-ऐप बहुत प्रसन्न नहीं होंगे? एप्लिकेशन उपयोग और उपलब्ध मेमोरी के संबंध में डेटाबेस कैश को ट्यून करना अधिक बुद्धिमान होगा। यदि वह पहले से ही स्वैप कर रहा है, तो उसे या तो अधिक RAM की आवश्यकता है, या अपने DB सर्वर को बेहतर तरीके से कॉन्फ़िगर करने के लिए। अन्यथा, स्वैप को अक्षम करने पर OOM को हर बार स्वैप करने के लिए DB सर्वर को मारना होगा। जो कि उनके सवाल को देखते हुए, अक्सर होता है।
रैपिडवेब्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.