14.04 या इससे अधिक की 1GB से 8TB RAM के लिए मुझे कितना स्वैप चाहिए?


14

मैं एक नई मशीन पर 64 बिट 14.04 स्थापित करने जा रहा हूं, जैसे 1 से शायद 128 जीबी रैम और बाद में अधिक रैम। मुझे स्वैप विभाजन के लिए कितना स्थान आवंटित करना चाहिए?

और विशेष रूप से: इन नंबरों के लिए उन सिफारिशों को क्यों ?

(मौजूदा जवाबों में से कोई भी यहां और यहां कोई भी क्यों नहीं समझाता है और यदि हम 1 जीबी या रैम और ऊपर देखें तो थोड़ा सा दिनांकित हैं)


6
I की संभावित डुप्लिकेट में 16GB रैम है। क्या मुझे 32GB स्वैप की आवश्यकता है? 2017 से उत्तर हैं (या 2017 में अपडेट किए गए), इसलिए यह वर्तमान में इस से अधिक हाल की सिफारिशों को रखता है।
मेलेबियस

1
@ मेलेबियस: मैं असहमत हूं: हालांकि यह सवाल नया है, यह उस व्यक्ति की तुलना में अधिक सामान्य है जिसे आप डुप्लिकेट करने की कोशिश कर रहे हैं। यह Q & A पुराने को शामिल करता है, लेकिन रिवर्स सच नहीं है! ;-)
फबी

1
@ फ़ैबी उस मामले में, दूसरे को इस के डुप्लिकेट के रूप में चिह्नित नहीं किया जाना चाहिए?
मेलेबियस

1
@ मेलबियस यदि दोनों प्रश्न समीक्षकों द्वारा विभिन्न स्थितियों में अन्य प्रश्नों के डुप्लिकेट प्रश्नों के रूप में उपयोग किए जा सकते हैं, तो दोनों प्रश्नों को इन विभिन्न स्थितियों को संभालने के लिए खुला रखा जा सकता है क्योंकि दोनों प्रश्नों के अत्यधिक उत्तर हैं।
कारेल

2
@ मेलेबियस हमने पहले ही मेटा में इस विषय पर चर्चा की है और समुदाय ने प्रत्येक स्टैंड को वैसा ही रहने देने का फैसला किया है।
Fabby

जवाबों:


30

संक्षिप्त उत्तर:

अपनी स्वैप फ़ाइल को यहां सेट करें:

  • round(sqrt(RAM))यदि आप हाइबरनेशन का उपयोग नहीं करते हैं
  • RAM+round(sqrt(RAM))यदि आप हाइबरनेशन का उपयोग करते हैं

अपने swappiness10 को डेस्कटॉप पर सेट करें , लेकिन सर्वर पर नहीं!

लंबे उत्तर:

भूतकाल में:

पिछले 25 वर्षों के लिए उपयोग में अंगूठे का नियम न्यूनतम 1xRAM और अधिकतम 2xRAM रहा है, जो कि आप हर समय उद्धृत करेंगे।

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

घटते रिटर्न के कारण उस समय अधिकतम सेट किया गया था: यह बहुत धीमी गति से स्वैप करने के लिए बहुत धीमी है क्योंकि एचडीडी का उपयोग 1000 धीमी है तो राम का एक कारक है: एक आपात स्थिति में अच्छा है, लेकिन रोजमर्रा के उपयोग के लिए वास्तव में अच्छा नहीं है! उस समय, जब आप स्वैप स्थान से बाहर भागे थे, तो अधिक रैम जोड़ने का समय था! (जो आज भी सत्य है)।

वर्तमान में:

  1. यदि आप हाइबरनेशन का उपयोग नहीं करते हैं और आपकी मेमोरी 1GByte से अधिक है, तो अंगूठे का नया नियम वह है round(sqrt(RAM))जहां RAMस्पष्ट रूप से GB और sqrtवर्गमूल में आपके RAM का आकार है । :-)

  2. यदि आप हाइबरनेशन का उपयोग करते हैं, तो आपको रैम की पूरी मात्रा को स्वैप करने में सक्षम होना चाहिए + पहले से ही डिस्क को रैम को स्वैप करना, इस प्रकार सूत्र बन जाता है: RAM+round(sqrt(RAM))

  3. कम रिटर्न का नियम आज भी अधिकतम के लिए है, लेकिन जब तक आप अपने वास्तविक उपयोग का परीक्षण नहीं करते हैं , तब तक 2xRAM लेना डिस्क स्थान की बर्बादी है , इसलिए जब तक आप अन्य कार्यप्रणालियों का उपयोग करके स्वैप स्थान से बाहर चलाने के लिए अधिकतम उपयोग न करें ।

ये सभी मिलकर आपको निम्न तालिका देते हैं: (पिछले 3 कॉलम स्वैप स्पेस को दर्शाते हुए)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB
    2TB             46GB              2094GB        4TB
    4TB             64GB              4160GB        8TB
    8TB             91GB              8283GB       16TB

ऊपर सिर्फ अंगूठे का एक नियम है; यह गुरुत्वाकर्षण का नियम नहीं है! यदि आपके विशेष उपयोग का मामला अलग है तो
आप इस नियम (गुरुत्वाकर्षण के नियम के विपरीत) को तोड़ सकते हैं !

प्रो टिप: हमेशा एक HDD की शुरुआत में SWAP आवंटित करें क्योंकि डिस्क के अंदर सिर को कम स्थानांतरित करने की आवश्यकता होती है।
हां: SSDs पर, यह वास्तव में किसी भी अधिक मायने नहीं रखता है जहां आप स्वैप क्षेत्र का पता लगाते हैं क्योंकि वे चलते हुए सिर के बजाय क्वांटम-टनलिंग का उपयोग करते हैं और आधुनिक SSDs क्वांटम क्षरण को रोकने के लिए अपनी सभी मेमोरी कोशिकाओं (यहां तक ​​कि खाली स्थान) का उपयोग करते हैं।

परीक्षण कैसे करें यदि आपके स्वैप का उपयोग "सामान्य" नियम से अलग है:

बस निष्पादित करें:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

जो आपको बाहर चलने वाले सभी कार्यक्रमों की एक सूची देगा (शीर्ष पर सबसे स्वैप स्थान का उपयोग करने वाले के साथ)

यदि आप अधिक उपयोग कर रहे हैं तो कुछ केबी: अधिक से अधिक आकार दें तो न्यूनतम, अन्यथा, परेशान न करें ...

यदि आप सर्वर पर हैं, तो अभी पढ़ना बंद करें: आप सभी सेट हो गए हैं!


यदि आप एक डेस्कटॉप / लैपटॉप क्लाइंट (सर्वर नहीं) पर हैं, तो आप चाहते हैं कि आपका GUI यथासंभव संवेदनशील हो और जब आप वास्तव में हो तो केवल स्वैप करें । उबंटू को सर्वर के उपयोग के लिए जल्दी स्वैप करने के लिए अनुकूलित किया गया है, लेकिन अपने क्लाइंट पर आप संपादन करना चाहते हैं कि विशाल 250 मेगा-पिक्सेल कच्ची तस्वीरgimpswappiness शीघ्रता से हो , इसलिए आपके 10 पर सेट करने से कर्नेल बहुत जल्दी स्वैप हो जाएगा, जबकि यह सुनिश्चित नहीं करता है ' टी स्वैप बहुत देर हो चुकी है:

यदि आपके पास एक sysctl.confफ़ाइल है,

sudo nano /etc/sysctl.conf

या

यदि आपके पास कोई sysctl.dनिर्देशिका है लेकिन कोई sysctl.confफ़ाइल नहीं है, तो एक नई फ़ाइल बनाएं:

sudo nano /etc/sysctl.d/35_swap.conf 

और दोनों मामलों में जोड़ें:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

फ़ाइल के अंत में, फ़ाइल ( Ctrl+ नैनो में XY+ Enter) को सहेजें और निष्पादित करें:

sysctl --system

पैरामीटर को पुनः लोड करने के लिए या विंडो $ एप्रोच और रीबूट लेने के लिए ... :-)


1
धन्यवाद। "घटती वापसी" से आपका क्या अभिप्राय है? यदि रैम और स्वैप दोनों पूरी तरह से उपयोग किए जाते हैं, तो स्वैप 2 * RAM आकार होने पर भी हाइबरनेट करना असंभव है, है ना? (क्योंकि हाइबरनेशन के लिए स्वैप के आकार की आवश्यकता होगी RAM + स्वैप, जो असंभव है?)
टिम

हां, लेकिन मैंने अभी तक ऐसा कभी नहीं किया है ... (और मैं पुराना हूँ! इसलिए 2 * RAM: जब सभी RAM की अदला-बदली हो जाती है, तब भी आप हाइबरनेट कर सकते हैं ...
Fabby

2
"कम रिटर्न" का मतलब है कि HDD का उपयोग 1000 धीमी तो RAM का एक कारक है, इसलिए यदि आपको अपनी रैम को दो बार स्वैप करने की आवश्यकता है, तो पूर्ण होने से पहले आप बुढ़ापे से मर चुके होंगे ... यह सिर्फ तब है जब आप हाइबरनेट करें ' पहले से ही अदला
बदली

1
@Fabby मूल प्रश्न पर यह सीवी की समीक्षा समय फिर से: askubuntu.com/review/close/889454 । Yufenyuy Veyeh Dider के प्रश्न के तहत टिप्पणी देखें।
कारेल

1
@mrkskwsnck: यह उसी लेखक द्वारा है ... ;-)
Fabby

6

स्वैप के लिए आवश्यकता

स्वैप 3 कारणों से उपयोगी है:

  1. रैम से अव्यवस्था हटाना। Kernel.org पर लेख से :

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

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

  2. यह उन मेमोरी की मात्रा को विस्तारित करता है जो प्रक्रियाएं उपयोग कर सकती हैं। यह अच्छी तरह से समझा गया है। आप नहीं चाहते हैं कि सिस्टम स्मृति की कमी और दुर्घटना के कारण बाहर चला जाए। इस विशिष्ट कारण के लिए, एक सुरक्षात्मक सुविधा के रूप में , स्वैप मौजूद होना चाहिए

  3. हाइबरनेशन: जब कोई कंप्यूटर हाइबरनेट करता है, तो रैम की सामग्री डिस्क पर जाती है।

स्वैप राशि

स्वैप के उद्देश्य को जानना और आपकी मशीन की रैम राशि के आधार पर, आप एक स्वैप आकार चुन सकते हैं जो आपके उद्देश्य के अनुकूल हो। विशिष्ट दिशानिर्देश नहीं हैं, केवल अंगूठे के नियम जो आप अपने सिस्टम को फिट करने के लिए अपने स्वैप आकार को दर्जी करने के लिए उपयोग कर सकते हैं

उदाहरण के लिए, linux.com अनुशंसा करता है:

अंगूठे का एक नियम इस प्रकार है: 1) एक डेस्कटॉप सिस्टम के लिए, डबल सिस्टम मेमोरी के स्वैप स्पेस का उपयोग करें, क्योंकि यह आपको बड़ी संख्या में एप्लिकेशन चलाने के लिए अनुमति देगा (जिनमें से कई बेकार हो जाएंगे और आसानी से स्वैप हो जाएंगे), सक्रिय अनुप्रयोगों के लिए अधिक रैम उपलब्ध है; 2) एक सर्वर के लिए, स्वैप की थोड़ी मात्रा उपलब्ध है (भौतिक स्मृति का आधा कहें) ताकि जरूरत पड़ने पर स्वैप करने के लिए आपके पास कुछ लचीलापन हो, लेकिन उपयोग की जाने वाली स्वैप स्थान की मात्रा की निगरानी करें और यदि आवश्यक हो तो अपनी रैम को अपग्रेड करें; 3) पुराने डेस्कटॉप मशीनों (केवल 128 एमबी के साथ) के लिए, आप स्वैप कर सकते हैं, यहां तक ​​कि 1GB तक की जगह का उपयोग करें।

व्यक्तिगत अनुभव से, यहाँ मैं क्या करूँगा:

1 - 2 जीबी के साथ एक मशीन को ध्यान में रखते हुए जिसे हाइबरनेट करने की आवश्यकता नहीं है और आकस्मिक उपयोग के लिए, आपके पास 1 जीबी से 2 जीबी स्वैप स्थान हो सकता है। 14.04 Ubuntu वाले मेरे पीसी में 1GB रैम और 2GB स्वैप है। स्वैप राशि कभी भी 800MB सीमा पार नहीं करती है, और मैं अपने पीसी का उपयोग केवल वेब और स्क्रिप्टिंग सर्फ करने के लिए करता हूं।

एक पीसी जिसमें 2GB से अधिक है और आपको हाइबरनेट करने की आवश्यकता नहीं है, आप 512MB से 1GB तक स्वैप रख सकते हैं। मेरे पास 15.04 वाला एक लैपटॉप है, जिसे मैंने कभी हाइबरनेट नहीं किया है और जिसमें 512 एमबी की स्वैप फ़ाइल ( विभाजन नहीं ) है। रैम अपने आप में 6 जीबी है लेकिन कभी भी 2-3 जीबी को पार नहीं करता है। फिर से: आकस्मिक उपयोग।

यदि आपको हाइबरनेट करने की आवश्यकता है, तो कॉस्मोसालिबुर और फैबी ने पहले ही स्वैप को संबोधित किया है, इसलिए मैं इसमें बहुत अधिक विस्तार नहीं करूंगा। मेरी विनम्र राय है:

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


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