लिनक्स 'टॉप' कमांड से आउटपुट की व्याख्या कैसे करें?


27

मेमोरी का उपभोग करने के बारे में यहां एक चर्चा के बाद PHP-FPM, मुझे केवल मेमोरी को topकमांड में पढ़ने में समस्या मिली । यहाँ मेरा स्क्रीनशॉट के topबाद पुनः आरंभ है PHP-FPM। सब कुछ सामान्य है: लगभग 20 PHP-FPMप्रक्रियाएं, प्रत्येक में 5.5 एमबी मेमोरी (कुल का 0.3%) खपत होती है।

यहाँ छवि विवरण दर्ज करें

यहां पुराने सर्वर को पुनरारंभ करने से ठीक पहले PHP-FPM(पिछले पुनरारंभ के एक दिन बाद) किया जाता है। यहां, हमारे पास अभी भी 25 के PHP-FPMसाथ दोहरी मेमोरी उपयोग (10 एमबी कुल 0.5% का संकेत है)। इस प्रकार, उपयोग की जाने वाली कुल मेमोरी 600-700 एमबी होनी चाहिए। फिर, 1.6GB मेमोरी का उपयोग क्यों किया गया है?

यहाँ छवि विवरण दर्ज करें



@ephemient नहीं, यहाँ ऐसा नहीं है। मैंने ये सब सामान चेक किया है। यह PHP-FPM के साथ जुड़ा हुआ कुछ है, और केवल PHP-FPM को पुनरारंभ करके मेमोरी को मुक्त कर दिया जाएगा। वैसे भी, मेम और बफर / कैश के मूल्य freeसमान हैं।
Googlebot

6
ऐसा लगता है कि आप एक Virtuozzo "VM" चला रहे हैं। जहाँ तक उन चीजों पर मेमोरी अकाउंटिंग की बात है, सभी दांव बंद हैं।
Womble


प्रिय womble और ephemient: मैंने आपके दोनों जवाब चुरा लिए हैं! Cackles
वेस्ले

जवाबों:


34

टीएल; डीआर १

आपका सर्वर किसी प्रकार के सदाचारों / ओपनवेज़ / वर्चुअलाइजेशन-डु-पत्रिकाओं कंटेनर के भीतर है। स्मृति उपयोग की भावना बनाने की कोशिश पवनचक्कियों पर झुक रही है।

टीएल; डीआर 2

लिनक्स ने आपकी रैम खा ली! लेकिन यह ठीक है, यह सभी के लिए करता है।


द लॉन्ग स्टोरी

चलो इसे तोड़ दो!

में Mem:खंड हमने:

  • $n total: आपकी मशीन में भौतिक रैम की मात्रा
  • $n used: लिनक्स द्वारा कितनी मेमोरी का उपभोग किया जा रहा है, न कि केवल प्रक्रियाओं का योग।
  • $n free: लिनक्स द्वारा कितनी रैम का उपभोग नहीं किया जा रहा है। यह इस बात को ध्यान में नहीं रखता है कि कैश्ड और बफ़र्ड मेमोरी सार "फ्री" में है।
  • $n buffers: बफर स्पेस वह जगह है जहां डिस्क I / O के ब्लॉक पढ़े गए हैं या लंबित हैं, जो स्टोर किए गए हैं। एक बफर एक एकल डिस्क ब्लॉक का एक रैम प्रतिनिधित्व है।

में Swap:खंड हमने:

  • $n total: स्वयं व्याख्यात्मक। पृष्ठों को स्वैप करने के लिए उपलब्ध डिस्क स्थान की मात्रा।
  • $n used: स्वयं व्याख्यात्मक। कितना डिस्क स्वैप स्थान उपयोग किया जाता है।
  • $n free: हर्प डर्प।
  • $n cache: ऊपर बफ़र्स से संबंधित। यह वास्तव में पेज कैश का हिस्सा है और भौतिक डिस्क पर इसका कोई स्थान नहीं है। इस बातचीत के विवरण के बारे में चिंता न करें।

जब आप दौड़ते हैं तो दिलचस्प हिस्सा आता है free -m। आपको तीन पंक्तियाँ दिखाई देंगी, और सभी संख्याएँ शीर्ष से संबद्ध होंगी। मैं अपने खुद के पीसी को एक उदाहरण के रूप में दूंगा:

             total       used       free     shared    buffers     cached
Mem:          8070       7747        323          0        253       5713
-/+ buffers/cache:       1780       6290
Swap:         5055          0       5055

मेम पंक्ति मेगाबाइट्स में कुल रैम दिखाती है ( $n totalशीर्ष में), कितना उपयोग किया जाता है ( $n usedशीर्ष में), कितना मुक्त ( $n freeशीर्ष में) है, कितना साझा किया गया है (उस पर ध्यान न दें), और अब अच्छा हिस्सा आता है! buffersऔर cachedस्तंभों में free -mसंबंध स्थापित करने, जाहिर, $n buffersऔर $n cache। लेकिन दूसरी पंक्ति पर एक नज़र डालते हैं जो इसके free -mसाथ शुरू होती है -/+ buffers/cache:। गणित से पता चलता है कि उपयोग की गई राशि वास्तव में (कुल) है - ((इस्तेमाल किया-बफ़र्स) -cached)। मुक्त (कुल) है - (नया)।

इस सब का क्या मतलब है? इसका मतलब है कि लिनक्स ने आपकी रैम खा ली है! लघुकथा यह है कि डिस्क को कैशिंग के लिए उपयोग करने के लिए उपलब्ध के रूप में लिनक्स कर्नेल रैम को घेरता है। जब तक आप ऐसा महसूस न करें कि आप कस्टम कर्नेल संकलित करने का प्रयास कर रहे हैं, तब तक आप इसके बारे में कुछ नहीं कर सकते। प्रो टिप: नहीं।

रैम वास्तव में वहाँ है और प्रक्रियाओं के लिए अपने समय पर उपयोग करने के लिए स्वतंत्र है। कि -/+ buffers/cache:पंक्ति में क्या मतलब है free -m। हालाँकि, आप गैर-हाइपर-विज़ोर वर्चुअलाइज़ेशन कंटेनर के अंदर हैं जो चीजों को थोड़ा-थोड़ा करके बनाता है। आप बस इस बिंदु पर बाइट सटीकता के साथ अपनी स्मृति का जायजा नहीं ले सकते। हालाँकि, आप ऐसा कोई व्यवहार नहीं देख रहे हैं जो बहुत असामान्य हो।

शांत रहें और आगे बढ़ते रहें। इसके अलावा, एक भौतिक सर्वर प्राप्त करें (जब तक कि आपको स्मृति के आंकड़े पसंद नहीं आते हैं, जैसे कि क्रेस्किन आपका SysAdmin है)।


उपयोग नहीं की गई राशि है ((इस्तेमाल किया-बफ़र्स) -cached)?
मैक

1

मेमोरी उपयोग की जांच करने का सबसे अच्छा तरीका शीर्ष नहीं है। हालाँकि, चूंकि मेरे प्रश्न को इस प्रश्न के डुप्लिकेट के रूप में चिह्नित किया गया था, मैं यहाँ अपना प्रस्ताव पोस्ट करने जा रहा हूँ।

मैं एक मंच पर पढ़ता हूं जो ps_mem.py आपके लिए मेमोरी उपयोग की जांच करेगा।

रिपोजिटरी: https://github.com/pixelb/ps_mem/

डाउनलोड:

pip install ps_mem

उपयोग:

ps_mem

आउटपुट:

# ps_mem
 Private  +   Shared  =  RAM used   Program

  4.0 KiB +  15.5 KiB =  19.5 KiB   udevd
  4.0 KiB +  16.0 KiB =  20.0 KiB   mysqld_safe
  4.0 KiB +  25.5 KiB =  29.5 KiB   dbus-daemon
  4.0 KiB +  27.5 KiB =  31.5 KiB   xinetd
 60.0 KiB +  14.5 KiB =  74.5 KiB   epmd
108.0 KiB +  23.0 KiB = 131.0 KiB   init
  8.0 KiB + 135.0 KiB = 143.0 KiB   saslauthd (2)
180.0 KiB +  34.0 KiB = 214.0 KiB   check_scripts.s
796.0 KiB +  41.0 KiB = 837.0 KiB   bash
528.0 KiB + 359.0 KiB = 887.0 KiB   crond (7)
  1.2 MiB + 218.0 KiB =   1.4 MiB   sshd (2)
  1.6 MiB +  45.0 KiB =   1.6 MiB   rsyslogd
  2.0 MiB + 133.0 KiB =   2.1 MiB   beam.smp
  1.3 MiB +   2.3 MiB =   3.6 MiB   httpd (8)
 12.8 MiB + 956.0 KiB =  13.8 MiB   sendmail.sendmail (7)
 53.5 MiB + 114.0 KiB =  53.7 MiB   mysqld
317.6 MiB +   2.3 MiB = 320.0 MiB   python (6)
---------------------------------
                        398.5 MiB
=================================
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.