लिनक्स सर्वर में मेमोरी के उपयोग और लोड औसत को कैसे समझें


57

मैं एक लिनक्स सर्वर का उपयोग कर रहा हूं जिसमें 128GB मेमोरी और 24 कोर हैं। मैं इसका उपयोग करने के लिए शीर्ष का उपयोग करता हूं। इसका आउटपुट पोस्ट के अंत में चिपकाया जाता है। यहाँ दो प्रश्न हैं:

(1) मैं देखता हूं कि प्रत्येक चलने वाली प्रक्रिया में बहुत कम प्रतिशत मेमोरी होती है (% MEM कोई 0.2% से अधिक नहीं, और सबसे अधिक 0.0%), लेकिन कुल मेमोरी का उपयोग आउटपुट की चौथी पंक्ति में कैसे किया जाता है ( "मेम: 130766620k कुल, 130161072k इस्तेमाल किया, 605548k मुफ्त, 919300k बफर")? सभी प्रक्रियाओं पर स्मृति के उपयोग के प्रतिशत का योग लगभग 100% प्राप्त करने की संभावना नहीं है, है ना?

(२) पहली पंक्ति पर लोड औसत कैसे समझें ("लोड औसत: 14.04, 14.02, 14.00")?

धन्यवाद एवं शुभकामनाएँ!

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

धन्यवाद!

मैं वास्तव में यह निर्धारित करने के लिए कि किसी सर्वर को बहुत अधिक लोड किया गया है, स्मृति के उपयोग के प्रतिशत के आधार पर कुछ खुरदरी संख्याओं को सुनना पसंद करता हूं, क्योंकि मैं एक बार एक ऐसा व्यक्ति बन गया हूं जिसने वर्तमान लोड को समझे बिना सर्वर को क्रैम किया।

क्या स्वैप को लगभग स्मृति के समान माना जाता है? उदाहरण के लिए, जब मेमोरी और स्वैप लगभग एक ही आकार के होते हैं, यदि मेमोरी लगभग समाप्त हो रही है, लेकिन स्वैप अभी भी काफी हद तक स्वतंत्र है, तो क्या मैं इसे केवल ऐसे देख सकता हूं जैसे कि मेमोरी + स्वैप का उपयोग प्रतिशत अभी भी अधिक नहीं है और अन्य नए चलाएं प्रक्रियाओं?

आप CPU या मेमोरी (या मेमोरी + स्वैप) के उपयोग पर एक साथ कैसे विचार करेंगे? क्या आप चिंतित हो जाते हैं यदि दोनों में से कोई बहुत अधिक या दोनों तक पहुँचता है?

शीर्ष top का उत्पादन

$ ऊपर

 
शीर्ष - 12:45:33 19 दिन, 23:11, 18 उपयोगकर्ता, लोड औसत: 14.04, 14.02, 14.00
कार्य: 484 कुल, 12 दौड़ना, 472 सोना, 0 रोकना, 0 ज़ोंबी
Cpu(s): 36.7%us, 19.7%sy,  0.0%ni, 43.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  130766620k total, 130161072k used,   605548k free,   919300k buffers
Swap: 63111312k total,   500556k used, 62610756k free, 124437752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6529 sanchez   18  -2 1075m 219m  13m S  100  0.2  13760:23 MATLAB
13210 timothy   18  -2 48336  37m 1216 R  100  0.0   3:56.75 absurdity
13888 timothy   18  -2 48336  37m 1204 R  100  0.0   2:04.89 absurdity
14542 timothy   18  -2 48336  37m 1196 R  100  0.0   1:08.34 absurdity
14544 timothy   18  -2  2888 2076  400 R  100  0.0   1:06.14 gatherData
 6183 sanchez   18  -2 1133m 195m  13m S  100  0.2  13676:04 MATLAB
 6795 sanchez   18  -2 1079m 210m  13m S  100  0.2  13734:26 MATLAB
10178 timothy   18  -2 48336  37m 1204 R  100  0.0  11:33.93 absurdity 
12438 timothy   18  -2 48336  37m 1216 R  100  0.0   5:38.17 absurdity
13661 timothy   18  -2 48336  37m 1216 R  100  0.0   2:44.13 absurdity
14098 timothy   18  -2 48336  37m 1204 R  100  0.0   1:58.31 absurdity
14335 timothy   18  -2 48336  37m 1196 R  100  0.0   1:08.93 absurdity
14765 timothy   18  -2 48336  37m 1196 R   99  0.0   0:32.57 absurdity
13445 timothy   18  -2 48336  37m 1216 R   99  0.0   3:01.37 absurdity
28990 root      20   0     0    0    0 S    2  0.0  65:50.21 pdflush
12141 tim       18  -2 19380 1660 1024 R    1  0.0   0:04.04 top
 1240 root      15  -5     0    0    0 S    0  0.0  16:07.11 kjournald
 9019 root      20   0  296m 4460 2616 S    0  0.0  82:19.51 kdm_greet
    1 root      20   0  4028  728  592 S    0  0.0   0:03.11 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:01.01 migration/0
    4 root      15  -5     0    0    0 S    0  0.0   0:08.13 ksoftirqd/0
    5 root      RT  -5     0    0    0 S    0  0.0   0:00.00 watchdog/0
    6 root      RT  -5     0    0    0 S    0  0.0  17:27.31 migration/1
    7 root      15  -5     0    0    0 S    0  0.0   0:01.21 ksoftirqd/1
    8 root      RT  -5     0    0    0 S    0  0.0   0:00.00 watchdog/1
    9 root      RT  -5     0    0    0 S    0  0.0  10:02.56 migration/2
   10 root      15  -5     0    0    0 S    0  0.0   0:00.34 ksoftirqd/2
   11 root      RT  -5     0    0    0 S    0  0.0   0:00.00 watchdog/2
   12 root      RT  -5     0    0    0 S    0  0.0   4:29.53 migration/3
   13 root      15  -5     0    0    0 S    0  0.0   0:00.34 ksoftirqd/3

2
स्मृति के बारे में अच्छे उत्तर के लिए इसे देखें। serverfault.com/questions/38065/#38074
Zoredache

और यह लोड लोड औसत के बारे में त्वरित सारांश के लिए (या विवरण के लिए यह लंबे समय से पढ़ा गया)।
निकोले

जवाबों:


56

(1) मैं देखता हूं कि प्रत्येक चलने वाली प्रक्रिया में बहुत कम प्रतिशत मेमोरी होती है (% MEM कोई 0.2% से अधिक नहीं, और सबसे अधिक 0.0%), लेकिन कुल मेमोरी का उपयोग आउटपुट की चौथी पंक्ति में कैसे किया जाता है ( "मेम: 130766620k कुल, 130161072k इस्तेमाल किया, 605548k मुफ्त, 919300k बफर")? सभी प्रक्रियाओं पर स्मृति के उपयोग के प्रतिशत का योग लगभग 100% प्राप्त करने की संभावना नहीं है, है ना?

यह देखने के लिए कि आप वर्तमान में कितनी मेमोरी का उपयोग कर रहे हैं, चलाएं free -m। यह जैसे आउटपुट प्रदान करेगा:

             कुल उपयोग मुक्त साझा बफ़र्स कैश किया गया
मेम: 2012 1923 88 0 91 515
- / + बफ़र्स / कैश: 1316 695
स्वैप: 3153 256 2896

शीर्ष पंक्ति 'प्रयुक्त' (1923) मान लगभग हमेशा शीर्ष पंक्ति मेम मान (2012) से मेल खाता है। चूंकि लिनक्स डिस्क ब्लॉक (515) को कैश करने के लिए किसी भी अतिरिक्त मेमोरी का उपयोग करना पसंद करता है।

देखने के लिए उपयोग की जाने वाली महत्वपूर्ण आकृति बफ़र्स / कैश पंक्ति का उपयोग किया गया मान (1316) है। वर्तमान में आपके एप्लिकेशन उपयोग कर रहे हैं यह कितना स्थान है। सर्वश्रेष्ठ प्रदर्शन के लिए, यह संख्या आपकी कुल (2012) मेमोरी से कम होनी चाहिए। मेमोरी त्रुटियों को रोकने के लिए, इसे कुल मेमोरी (2012) और स्वैप स्पेस (3153) से कम होना चाहिए।

यदि आप जल्दी से देखना चाहते हैं कि बफ़र्स / कैश रो फ्री वैल्यू (695) पर कितनी मेमोरी मुफ्त लगती है। यह कुल मेमोरी (2012) है - वास्तविक उपयोग (1316)। (२०१२ - १३१६ = ६ ९ ६, ६ ९ ५ नहीं, यह सिर्फ एक दौर होगा)

(२) पहली पंक्ति पर लोड औसत कैसे समझें ("लोड औसत: 14.04, 14.02, 14.00")?

लोड औसत पर यह लेख एक अच्छा ट्रैफ़िक सादृश्य का उपयोग करता है और मेरे द्वारा अब तक पाया गया सबसे अच्छा है: लिनक्स सीपीयू लोड को समझना - आपको कब चिंतित होना चाहिए? । आपके मामले में, जैसा कि लोगों ने बताया:

मल्टी-प्रोसेसर सिस्टम पर, लोड उपलब्ध कोर प्रोसेसर की संख्या के सापेक्ष है। "100% उपयोग" चिह्न एकल-कोर प्रणाली पर 1.00 है, 2.00, दोहरे-कोर पर, क्वाड-कोर पर 4.00, आदि।

तो, 14.00 और 24 कोर के लोड औसत के साथ, आपका सर्वर ओवरलोड होने से बहुत दूर है।


17

यूनिक्स जैसे सिस्टम, लिनक्स सहित, उपलब्ध रैम का सबसे कुशल उपयोग संभव बनाने के लिए डिज़ाइन किए गए हैं। बहुत सामान्य शब्दों में, 3 राज्य हैं जिनमें प्रत्येक MB RAM में हो सकती है:

  1. नि: शुल्क
  2. एक प्रक्रिया द्वारा उपयोग किया जाता है
  3. बफ़र्स के लिए उपयोग किया जाता है

3 राज्य का उपयोग केवल स्क्रैच स्पेस के रूप में किया जाता है और जब भी आवश्यक हो, पुन: असाइन करने का इरादा किया जाता है, अर्थात कार्यक्रमों के लिए आपकी कुल उपलब्ध स्मृति वास्तव में Free + UseforBuffers है। इस प्रकार, आप वास्तव में किसी विशिष्ट प्रक्रिया को दिए गए बफर आवंटित स्थान को नहीं देखेंगे।

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

लोड-एवरेज कैलकुलेशन को लिनक्स की रन क्यू में रनिंग या अनट्रीटेबल के रूप में प्रक्रियाओं के मूविंग एवरेज के रूप में सबसे अच्छा माना जाता है

मतलब, कि आप अपने लोड एवरेज को (# रनिंग प्रॉसेस का) + (# IO पर इंतज़ार कर रहे प्रॉसेस का) समझ सकते हैं। यह ध्यान में रखते हुए कि किसी भी समय आपके पास $ CORE संख्या निष्पादित की जा सकती है, मैं कहूंगा कि आपका लोड औसत 14 बहुत कम है।


धन्यवाद! मेमोरी का उपयोग किया प्रतिशत (या मेमोरी + स्वैप) क्या भारी लोड के रूप में माना जाता है और नई प्रक्रियाओं को चलाने के लिए बेहतर नहीं है? क्या आप मेमोरी या मेमोरी + स्वैप दोनों को देखते हैं? क्या वास्तव में उपयोग किए गए स्वैप आकार को शीर्ष में दिखाया गया है? सीपीयू लोड औसत के बारे में, क्या आप "लोड औसत / कोर नंबर" द्वारा वास्तविक लोड को मापते हैं? आप सर्वर के भारी लोड होने के बारे में कितना सोचते हैं? धन्यवाद एवं शुभकामनाएँ!
टिम

2
लोड सिर्फ एक संकेतक है। एक सामान्य नियम के रूप में, कोर से अधिक का भार एक बुरी चीज है। आम तौर पर उपयोग की जाने वाली स्मृति का उच्च प्रतिशत एक बुरी चीज है। यह एक द्विआधारी मूल्य नहीं है जिसे आप कह सकते हैं कि 'यह बहुत ठीक है'। यदि आप RAM से बाहर निकलते हैं, तो आपके पास अधिक प्रक्रियाएँ चलाने के लिए पर्याप्त नहीं है। यदि आप बाहर नहीं भागते हैं, तो आप बहुत कुछ पा चुके हैं। यह आपकी स्थिति की बारीकियों पर बहुत अधिक निर्भर है।
सियान

4

से sarआदमी पेज:

       लोड औसत की गणना रन करने योग्य या की औसत संख्या के रूप में की जाती है 
       चल रहे कार्य (आर राज्य), और निर्बाध में कार्यों की संख्या
       नींद (डी राज्य) निर्दिष्ट अंतराल पर।

से uptimeआदमी पेज:

       सिस्टम लोड औसत प्रक्रियाओं की औसत संख्या है जो या तो हैं
       एक निष्क्रिय या निर्बाध अवस्था में। एक चल राज्य में एक प्रक्रिया
       या तो CPU का उपयोग कर रहा है या CPU का उपयोग करने की प्रतीक्षा कर रहा है। यूनिन में एक प्रक्रिया
       भयानक राज्य कुछ I / O एक्सेस के लिए प्रतीक्षा कर रहा है, जैसे डिस्क का इंतजार करना।
       औसत तीन समय के अंतराल पर लिया जाता है। लोड औसत
       एक सिस्टम में सीपीयू की संख्या के लिए सामान्यीकृत नहीं हैं, इसलिए लोड औसत
       1 वर्ष की आयु का अर्थ है कि 4 पर रहते हुए एक ही सीपीयू प्रणाली को हर समय लोड किया जाता है
       सीपीयू सिस्टम इसका मतलब है कि यह 75% निष्क्रिय था।

3
  1. कुछ समय के लिए, लिनक्स ने अपनी मेमोरी को इस तरह से प्रबंधित किया है, जो topमूल रूप से बेकार की उस लाइन को बनाता है , जो आम तौर पर उपयोगकर्ता की प्रक्रिया द्वारा आवश्यक नहीं होने पर मशीन के अधिकांश मेमोरी को विभिन्न उपयोगों के लिए आवंटित किया जाता है।
  2. लोड औसत चलने या चलने की प्रतीक्षा करने वाली प्रक्रियाओं की औसत संख्या है। यह आमतौर पर सिस्टम विलंबता / जवाबदेही के साथ एक मजबूत नकारात्मक सहसंबंध है, इसलिए आप इसे यथासंभव कम चाहते हैं। चूंकि आपका प्रत्येक सीपीयू किसी भी समय कुछ चल रहा हो सकता है, हालांकि, आप 14 पर बहुत अच्छा कर रहे हैं।

धन्यवाद! 1 के बारे में, क्या आपका मतलब है कि कुछ प्रक्रियाएं शीर्ष में दिखाई नहीं देती हैं लेकिन स्मृति का बहुत उपयोग कर रही हैं? या स्मृति के बारे में आउटपुट की चौथी पंक्ति ("मेम: 130766620k कुल, 130161072k का उपयोग, 605548k मुफ्त, 919300k बफ़र्स") भ्रामक है, मुझे शीर्ष और मेरे मामले में दिखाए गए सभी प्रक्रियाओं द्वारा उपयोग की जाने वाली स्मृति के प्रतिशत पर गौर करना चाहिए। मैं कुछ नई मेमोरी-खपत प्रक्रियाओं को सुरक्षित रूप से चला सकता हूं?
टिम

2
जैसा कि अन्य जवाबों में कहा गया है, लोड औसत को प्रोसेसर की संख्या के साथ तुलना की जानी चाहिए, इसलिए 14 एक 24-कोर सिस्टम पर इतना नहीं है। यह सिंगल-कोर सिस्टम (अच्छी तरह से) पर 14/24 = 0.58 की तरह होगा।
डेविड जेड

@ समय: मेरा मतलब बाद वाला है।
अराजकता

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