मेमोरी-इंटेंसिव कार्य के लिए 64 जीबी रैम कंप्यूटर पर स्वैप विभाजन आकार


36

मेरे कंप्यूटर पर 64 जीबी रैम और 240 जीबी एसएसडी है , जिसे मैं मेमोरी-इंटेंसिव कैलकुलेशन (मशीन लर्निंग, डेटा माइनिंग, आदि) के लिए इस्तेमाल करने जा रहा हूं। इंटरनेट पर मुझे मिलने वाली अधिकांश सलाह लगभग 2-4-8 जीबी रैम कंप्यूटर की है, और वे रैम स्वैप विभाजन के आकार को 2x करने की सलाह देते हैं (इसलिए 128 जीबी)।

क्या 128 जीबी स्वैप विभाजन करना उचित है? एक विशाल स्वैप विभाजन बनाने से मुझे क्या फायदे होंगे?

क्या मैं सही ढंग से समझता हूं कि अगर मैं भौतिक रैम से बाहर निकलता हूं तो:

  1. यदि मेरे पास कोई स्वैप नहीं है, तो मुझे 'मेमोरी से बाहर' त्रुटि मिलती है
  2. यदि मेरे पास स्वैप है, तो कुछ RAM पेजों को स्वैप पार्टीशन में कॉपी किया जाएगा, और प्रोग्राम चलता रहेगा (हालाँकि अधिक धीरे-धीरे)।

कुछ लोगों का कहना है कि SSD पर स्वैप करना एक बुरा विचार है, क्योंकि इसमें सीमित मात्रा में पढ़ने / लिखने का चक्र है। स्वैप का उपयोग कितनी तेजी से होगा यह एसएसडी पढ़ने / लिखने के चक्र को समाप्त करेगा (जहां तक ​​मुझे पता है, यह लगभग 50000 आईओपीएस लिखना है)?

मैं लिनक्स ( Ubuntu 14.04 (भरोसेमंद तहर)) का उपयोग कर रहा हूं ।

अभी के लिए 16 जीबी स्वैप सेट करना, क्योंकि यह निश्चित रूप से पर्याप्त होना चाहिए (उदाहरण के लिए, रेडहैट 4 जीबी का सुझाव देता है), और 16 जीबी डिस्क स्थान वास्तव में एक बड़ी बात नहीं है।


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

5
"रैम की मात्रा को दोगुना करने" की सिफारिश पुराने समय से होती है, जब कंप्यूटर में रैम कम थी। कई डॉक्स बताते हैं कि यह मुख्य रूप से <2GB RAM वाले कंप्यूटरों पर लागू होता है। इसके बाद, स्वैप आकार ज्यादातर मशीन के साथ आप क्या कर रहे हैं से संबंधित है।
जॉन डब्ल्यूएच स्मिथ

यदि आप जावा (और संभवतः अन्य ऐप्स) चला रहे हैं, तो यह सर्वर फॉल्ट q & a भी देखें , आप यह सुनिश्चित करना चाहते हैं कि आपके पास उनकी मेमोरी आवंटन बढ़ाने के लिए उनके लिए पर्याप्त स्वैप है। मैं व्यक्तिगत रूप से अपने स्वैप विभाजन के लिए RAM + 2 के आरएचईएल मानक के साथ छड़ी करता हूं
17-22

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

1
यदि आपके पास मेमोरी सघन एप्लिकेशन है, जैसे SVM ​​लर्निंग, और आप RAM से बाहर निकलते हैं और स्वैप करना शुरू करते हैं, तो सब कुछ ठीक होने में बहुत सुस्त हो जाएगा और आपकी एकमात्र उपलब्ध चाल प्लग को खींचने वाली है (जो कि मुझे कुछ समय के लिए हुआ) । आप शायद चाहते हैं कि आपकी प्रक्रिया OOM- मारी जाए यदि वह स्वैप करना शुरू कर दे, ताकि आप कम से कम सामान बदल सकें और फिर से शुरू कर सकें। हो सकता है कि SSD ड्राइव के साथ यह इतना बुरा नहीं है। मैं OOMK सेटिंग्स की भी जांच करूंगा - यह उबंटू पर मेरे साथ हुआ था कि कभी-कभी प्रक्रियाओं को OOM- मारा जाता था जब वहाँ अभी भी बहुत सारे राम बाकी थे क्योंकि उन्हें आक्रामक तरीके से आवंटित किया गया था
pqnet

जवाबों:


36

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

  1. आपको ऐसी जानकारी प्राप्त करने के लिए स्वैप की आवश्यकता है जो डिस्क कैश के लिए अधिक स्थान खाली करने के लिए रैम से कभी एक्सेस नहीं की जाएगी। कई एप्लिकेशन सिस्टम स्टार्टअप पर चलते हैं और फिर कभी एक्सेस नहीं किए जाएंगे। आप किसी भी पेज को नहीं चाहते हैं कि वे हमेशा के लिए रैम में फंस जाएं। इसलिए आपको उन्हें पकड़ने के लिए स्वैप की आवश्यकता है।

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

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

(मैं बर्ट से सहमत हूं कि 4 जीबी पर्याप्त होने की संभावना है।)


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

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

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

5
लिनक्स स्‍लैम को ओवरलैप करेगा भले ही स्‍वैप इनेबल न हो। यह सिर्फ OOMK प्रक्रिया है जब बहुत अधिक मेमोरी वास्तव में उपयोग की जाती है। तो उत्तर का दूसरा बिंदु गलत है।
रुसलान

1
@MaciejPiechotka या किसी फ़ाइल का उपयोग करें।
जेसन सी

29

RedHat 64 जीबी वाली मशीन पर 4 जीबी की सिफारिश करता है

हालांकि, स्वैपिंग साइज़ एक विज्ञान से अधिक एक कला है। यह इस बात पर निर्भर करता है कि मशीन का उपयोग किस लिए किया जा रहा है, आपके पास कितना डिस्क स्थान और मेमोरी है, और अन्य कारक हैं। याद रखें, आप हमेशा बाद में अधिक स्वैप जोड़ सकते हैं।

2X भौतिक मेमोरी नियम का उपयोग करना इन दिनों मेमोरी सिस्टम की मात्रा के साथ पुराना है। लेकिन शून्य स्वैप के साथ चलने की अनुशंसा नहीं की जाती है जब तक कि आप नहीं जानते कि आप क्या कर रहे हैं। 4 जीबी की सिफारिश एक अच्छा प्रारंभिक बिंदु है।


12
अंतिम पैराग्राफ के लिए +1। 2x अनुशंसा की तारीख तब होती है जब अधिकांश कंप्यूटरों में सामान्य उपयोग में स्वैपिंग से बचने के लिए पर्याप्त रैम नहीं होती थी। इसके बाद, कंप्यूटर का उपयोग करने से, 2x सीमा को एक बड़ी संख्या के रूप में चुना गया प्रतीत होता है कि स्वैप से बाहर चलने से पहले कंप्यूटर असामान्य रूप से धीमा हो जाएगा।
डैन नीली

1
2X ने भी ठीक काम किया जब सिस्टम में 4GB / 8GB RAM और सैकड़ों गीगाबाइट डिस्क स्थान था। ज़रूर, यह शायद जरूरत से ज्यादा था, लेकिन नुकसान क्या था? लेकिन अब जब सिस्टम में 16GB / 64GB RAM और 128GB / 256GB SSDs हैं, तो नुकसान स्पष्ट है।
डेविड श्वार्ट्ज

12

लिनक्स पर, आपको पर्याप्त स्वैप की आवश्यकता होती है ताकि उपलब्ध कुल वर्चुअल मेमोरी (RAM + SWAP) उन सभी प्रक्रियाओं के लिए पर्याप्त हो, जिन्हें आप एक बार में चलाना चाहते हैं और उनका अधिकतम वर्चुअल फ़ुटप्रिंट।

यदि आपके पास इससे कम स्वैप है, या कोई स्वैप नहीं है, तो निम्न स्थिति होती है: सिस्टम एक पृष्ठ आवंटित करने की कोशिश कर रहा मेमोरी से बाहर निकलता है। लेकिन, यह अभी भी एक नरम विफलता है, भले ही कोई स्वैप न हो, क्योंकि सिस्टम में बहुत सारे "पीड़ित" पृष्ठ हैं जिन्हें कमरे को बनाने के लिए हटाया जा सकता है: अर्थात्, सभी फ़ाइल-समर्थित मेमोरी मैपिंग के पृष्ठ, जैसे कि निष्पादक और साझा पुस्तकालयों!

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

स्वैप स्थान अनाम (फ़ाइल मैप नहीं किए गए) पृष्ठों को स्वैप करने के लिए स्थान प्रदान करके इस समस्या को नरम कर देता है: स्मृति आवंटन के लिए उपयोग किए जाने वाले पृष्ठ, ताकि निष्पादन योग्य कोड मेमोरी में रह सकें।

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

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

जब आपको इसकी कोई आवश्यकता नहीं है:

swapoff /path/to/swapfile
rm /path/to/swapfile

टिप्पणियाँ:

  1. आपको निश्चित रूप से कम से कम स्वैप करने की आवश्यकता नहीं है, क्योंकि आपके पास रैम है। अंगूठे का यह नियम ऑपरेटिंग सिस्टम पर वापस जाता है जहां स्वैपिंग के तरीके को डिजाइन करने के कारण इसकी सख्त आवश्यकता थी।

  2. जब कोई मेमोरी उपलब्ध न हो तो लिनक्स को कठिन बनाने के तरीके हैं, अर्थात् इन sysctl प्रविष्टियों के मानों में हेरफेर करने के माध्यम से:

    vm.overcommit_memory
    vm.overcommit_ratio
    

2
+1 वास्तव में कर्नेल कॉन्फ़िगरेशन पैरामीटर्स को संदर्भित करने के लिए - कुंजी प्रश्न के हिस्से में है If I have no swap, I get an 'out of memory' error- जो है false- सच्चाई यह है कि जब आप स्वैप स्पेस से बाहर निकलते हैं तो आउट-ऑफ-मेमोरी-किलर अंदर किक करेगा और मार देगा अंतरिक्ष को मुक्त करने के लिए एक यादृच्छिक प्रक्रिया - इसलिए आवश्यक स्वैप स्थान की मात्रा इस बात पर निर्भर करती है कि आपका आवेदन कैसे लिखा गया है।
सोरेन

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

3

और भी विचार हैं। यदि आपको काम करने की आवश्यकता है / चाहते हैं तो आपको कम से कम अपने रैम और फिर कुछ के आकार की आवश्यकता होगी। हालाँकि ऐसा लगता है कि आपको इसकी आवश्यकता नहीं है क्योंकि आपको लगता है कि आप मुख्य रूप से एक कम्प्यूटेशनल काम के घोड़े का निर्माण कर रहे हैं।

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


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

@amalloy यदि आपने अपने रैम को अपने स्वैप स्पेस में स्टोर किया है, तो स्वैप कहां जाता है (याद रहे कि स्वैप को मेमोरी के रूप में माना जाता है - अगर यह खो गया तो यह राम खोने जैसा ही है)।
NPSF3000

2

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

आधुनिक ऑपरेटिंग सिस्टम भौतिक मेमोरी और स्वैप स्पेस के संयोजन के रूप में वर्चुअल मेमोरी प्रदान करते हैं, इसलिए यदि आपको मशीन से अधिक मेमोरी की आवश्यकता है तो आपको अंतराल को भरने के लिए पर्याप्त स्वैप स्थान जोड़ना होगा । यानी अगर आपको 80 जीबी अधिकतम चाहिए, और मशीन में 64 जीबी है, तो आपको 16 जीबी स्वैप की आवश्यकता है।

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

अगर आपकी मेमोरी प्रेशर हमेशा कम रहती है तो स्वेपस्पेस के बिना काम करने में कुछ भी गलत नहीं है। लिनक्स पारदर्शी रूप से किसी भी अप्रयुक्त मेमोरी का उपयोग डिस्क कैश के रूप में करेगा।


2

"बहुत स्वैप" होने की तुलना में एक बेहतर विचार आपके काम को व्यवस्थित करना (फिर से करना) है ताकि काम करने वाले सेट मेमोरी में फिट हो जाएं, फिर फ़ाइल-सिस्टम का उपयोग करके आप जो काम करते हैं उसे स्टोर करने और पुनः प्राप्त करने के लिए। यानी, आपके मेमोरी उपयोग पैटर्न क्या होंगे, इसका अनुमान लगाने के लिए ओएस को मजबूर करने के बजाय, अपनी मेमोरी उपयोग पैटर्न को नियंत्रित करने के लिए अपनी समस्याओं के बारे में जो जानते हैं उसका उपयोग करें।

एक यादृच्छिक उदाहरण के रूप में जो मुझे इस गर्मी के लिए तुरंत प्रासंगिक है ... द्विघात चलनी को लागू करने में, किसी को चिह्नित करने के लिए एक बड़े (स्पष्ट रूप से) सन्निहित सरणी की आवश्यकता होती है (कुछ जटिल एल्गोरिथ्म जिनके विवरण वास्तव में इस उदाहरण के लिए मायने नहीं रखते हैं)। सरणी को ~ 100 गीगा-प्रविष्टियों की आवश्यकता होती है, इसलिए 1 टीबी श्रेणी में आसानी से। मैं इसे आवंटित करने का दिखावा कर सकता हूं और ओएस को सरणी के माध्यम से सभी अनुक्रमिक लेखन का समर्थन करने के लिए रैम को पृष्ठों से बाहर निकालने के लिए एक अद्भुत मात्रा में अक्षम स्वैपिंग करने देता हूं। हड्डी काटने वाले कुछ करने के बजाय, मैंने एक बहुत छोटे सरणी को आवंटित करने की व्यवस्था की है जो वास्तव में स्मृति में फिट बैठता है और फिर पुन: उपयोग करता है कि छोटे सरणी को पुनरावृत्ति करने के लिए स्लाइस में बाकी बड़े सरणी को कवर करें। मैंने ओएस भी छीन लिया है, सेवाओं का रनिंग सेट छीन लिया है, शेल को बदल दिया है,

एसएसडी तेज हो सकता है, लेकिन यह लगभग उतना तेज़ नहीं है, जितना कि कभी-कभी स्वैप करने के लिए स्टाल के बिना आपके संगणना को व्यवस्थित करना।


1

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

यदि आपके पास एक अतिरिक्त यूएसबी 3.0 पोर्ट है, तो मैं आपके स्वैप स्थान के लिए एक फ्लैश ड्राइव का उपयोग करने का सुझाव दूंगा। बहुत सारे हाई-स्पीड फ्लैश ड्राइव हैं जो आपके एसएसडी के रूप में तेज़ हैं, लेकिन बहुत सस्ता - अगर यह विफल होना शुरू हो गया है तो इसे बदलने के लिए पर्याप्त सस्ता है। अमेज़ॅन पर एक त्वरित खोज से पता चलता है कि $ 20 के तहत कई सभ्य 16 जीबी यूएसबी 3.0 फ्लैश ड्राइव हैं, और $ 60 के तहत कुछ 64 जीबी ड्राइव भी हैं।

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


3
SSD की अदला-बदली न करने के लिए +1, एक घटक की अदला-बदली के लिए, जिसका उपयोग बहुत कम जीवन काल के लिए किया जाता है।
एविएटर 45003

1
@TC सही है, अरमानएक्स - यदि आप फ्लैश (एसएसडी) का उपयोग करने से बचने की कोशिश कर रहे हैं, तो आप यूएसबी पर फ्लैश का उपयोग क्यों करेंगे? यह तर्कहीन है।
वॉरन

2
@TC: माध्यम से नीचे पहनने के कारण स्वैप के लिए SSD का उपयोग नहीं करना एक अनुचित शहरी किंवदंती है। स्वैपिंग "हर समय" नहीं होती है, लेकिन शायद ही कभी। इसके अलावा, यह कुछ ऐसा है जिस पर Win7 रिलीज के बाद Microsoft पर बड़े पैमाने पर शोध किया गया है, जिसके परिणामस्वरूप स्वैपिंग के विशिष्ट पहुंच पैटर्न SSD के लिए काफी स्वीकार्य हैं (यह विंडोज, उबंटू नहीं, लेकिन संभावना है कि लिनक्स बहुत बुरा प्रदर्शन नहीं करता है)। आपके पास एक सौ (या हजार) गुना अधिक लिखने की कार्रवाई है जो आपके SSD को मूर्खतापूर्ण लॉग फ़ाइलों के कारण होती है जिसे कोई भी कभी नहीं पढ़ रहा है (आमतौर पर हर पंक्ति को सिंक कर रहा है)।
डेमन

तर्क त्रुटिपूर्ण है: यदि थंबड्राइव वास्तव में एसएसडी जितना तेज़ है, तो यह सस्ता क्यों है?
18 अप्रैल को Agent_L

यह एक संतुलन है। एक तरफ, स्वैप फ़ाइल के लिए एक अच्छा विचार है। दूसरी ओर, यदि कोई स्वैप फ़ाइल SSD नीचे पहनती है (जो कि, आप सही कह रहे हैं, तो यह संभवत: कोई फर्क नहीं पड़ेगा), सस्ते प्रतिस्थापन का उपयोग करना बेहतर होगा - और $ 20 के लिए एक फ्लैश ड्राइव की तुलना में बहुत बेहतर है $ 100 से अधिक के लिए एक एसएसडी।
अरमानक्स

1

आप 1GiB (और संभावना कम) स्वैप के साथ भी ठीक रहेंगे। मेरा काम कंप्यूटर आमतौर पर 140-150 MiB से अधिक का उपयोग नहीं करता है। एक गीगाबाइट उसके लिए बहुत अधिक प्रावधान है।
जब तक आप सैकड़ों गीगाबाइट्स में डेटासेट्स की आवश्यकता वाले कार्यों की गणना नहीं करते हैं और (यह एक महत्वपूर्ण है!) डेटा अधिक या कम पहुंच-पहुंच वाले फैशन में एक्सेस किया जाता है, तो आप कभी भी स्वैप को इससे बड़ा नहीं बनाना चाहेंगे। लेकिन फिर, बस एक डेटाफाइल को मैप करने में मेमोरी उस एप्लिकेशन के लिए समान रूप से अच्छी तरह से काम करती है।

लेकिन अधिक स्वैप अधिक मदद करता है, है ना? कुछ भी हमेशा बेहतर है!

गौर कीजिए कि 16GiB (या 64GiB के बारे में क्या सोचता है), स्वैप में क्या अंतर होगा। यदि आप इन 16GiB का उपयोग कभी नहीं करते हैं, तो आप उन्हें पहले स्थान पर सेट नहीं कर सकते थे। लेकिन अगर आप उनका उपयोग करते हैं, तो क्या होता है? मुख्य मेमोरी की तुलना में डिस्क अत्यधिक धीमी है। यहां तक ​​कि SATA-600 SSD के साथ, 16GiB को स्थानांतरित करने में 30 से 40 सेकंड तक का समय लगता है, और कुछ अन्य कॉन्फ़िगरेशन पर 2-4 गुना।
अब किसी को अनिवार्य रूप से आपत्ति होगी कि आप एक दर्जन में एक दर्जन या तो 4kiB पृष्ठों में नहीं, बल्कि 16GiB में पेजिंग कर रहे हैं। जबकि यह सच है, बिंदु फिर भी खड़ा है। यदि आपको केवल एक-दो पृष्ठों की अदला-बदली करनी है, तो आपको 16GBB स्वैप की आवश्यकता नहीं है, लेकिन यदि आपको स्वैप के 16GiB की आवश्यकता है, तो आप उन्हें स्थानांतरित करने जा रहे हैं, वह भी (एक ही रास्ता या अन्य)।

सिद्धांत रूप में, सभी उपयोगकर्ताओं में से 99.9% बिना किसी स्वैप के 64GiB मशीन (या कोई भी 8 + GiB मशीन) का उपयोग कर सकते हैं, और सबसे अधिक संभावना है कि कभी भी कुछ गायब न हो। हालांकि, यह उचित नहीं है।
सबसे पहले, यह उप-इष्टतम है क्योंकि ऑपरेटिंग सिस्टम में भौतिक मेमोरी से बाहर निकलने पर इसे कम करने के विकल्प हैं। वहाँ दो चीजें यह कर सकते हैं: कुछ है कि प्रयोग नहीं किया है बाहर स्वैप, या बफर कैश से पृष्ठों को फेंक देते हैं। यदि आपके पास कोई स्वैप नहीं है, तो केवल एक चीज है जो यह कर सकती है। बफर कैश से पेजों को फेंकना हानिरहित है, लेकिन यह प्रदर्शन पर विशेष रूप से प्रभाव डाल सकता है।
यदि स्वैप नहीं है तो दूसरा, निजी अनाम मानचित्रण केवल विफल हो सकता है। यह आमतौर पर नहीं होगा, लेकिन अंततः जब उन सभी को संतुष्ट करने के लिए पर्याप्त भौतिक स्मृति उपलब्ध नहीं होती है, और कोई स्वैप नहीं होता है, तो ऑपरेटिंग सिस्टम में केवल यह विकल्प होता है, सिवाय ...
तीसरे, खूंखार ओओएम किलर में किक हो सकती है । जिसका अर्थ है कि कम या ज्यादा यादृच्छिक प्रक्रिया को मार दिया जाता है। नहीं धन्यवाद। यह कुछ ऐसा नहीं है जो आप चाहते हैं।

उस के साथ, कहा कि सलाह के रूप में आप एक स्वैप की जरूरत है एक्स बार राम की राशि की स्थापना उन लोगों से आती है जो कुछ दोहराते हैं जो उन्होंने सुना (और समझ में नहीं आया!) किसी से कुछ दोहराया जो उन्होंने सुना (और समझ में नहीं आया!) दशकों से। पहले।
1980 और 1990 के दशक में "2X योर रैम" नियम अंगूठे का नियम याद रखना आसान था, यह कभी भी "सुनहरा सच" नहीं था (बस कुछ ऐसा है जो ज्यादातर उपयोगकर्ताओं के लिए ठीक है), और यह आजकल बिल्कुल भी लागू नहीं होता है ।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.