इस एप्लिकेशन का उपयोग करके कितनी रैम है?


10

अगर मैं दौड़ता हूं top -cया htopउनकी मेमोरी खपत के साथ प्रक्रियाएं होती हैं, लेकिन यह वह नहीं है जो मैं देखना चाहता हूं।

क्या एक कमांड लाइन है जो किसी दिए गए एप्लिकेशन की रैम खपत को देखने की अनुमति देती है?

उदाहरण के लिए, मैं अपाचे वेब सर्वर की रैम खपत देखना चाहता हूं (इसके बजाय इसके चलने वाली सभी प्रक्रियाओं की जांच करके)

ram 


धन्यवाद। सबसे अच्छी बात यह है कि मैं इस प्रक्रिया के द्वारा एक मेमोरी खपत कर सकता हूं, जो चीज टॉप -c पहले से ही मुझे देती है

जवाबों:


4

यहाँ एक बहुत अच्छी विस्तृत व्याख्या है: https://blogs.kde.org/2005/09/15/measuring-memory-usage

लेकिन अनिवार्य रूप से: आपको वास्तव में खोदना होगा और समझना होगा कि आवेदन कैसे सेट किया गया है।

उदाहरण के लिए, mysql को देख रहे हैं:

  PID  PPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                    
 6004 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:40.33 mysqld                                                                                                                                            
16115 16085 composit  20   0 37900  27m 2908 S    0  0.2   0:00.37 mysqld                                                                                                                                            
16116 16115 composit  20   0 37900  27m 2908 S    0  0.2   2:07.34 mysqld                                                                                                                                            
16117 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.00 mysqld                                                                                                                                            
16118 16116 composit  20   0 37900  27m 2908 S    0  0.2   3:19.79 mysqld                                                                                                                                            
16119 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.01 mysqld                                                                                                                                            
16120 16116 composit  20   0 37900  27m 2908 S    0  0.2   5:31.09 mysqld                                                                                                                                            
16121 16116 composit  20   0 37900  27m 2908 S    0  0.2  14:19.53 mysqld                                                                                                                                            
16122 16116 composit  20   0 37900  27m 2908 S    0  0.2  36:13.67 mysqld                                                                                                                                            
16123 16116 composit  20   0 37900  27m 2908 S    0  0.2  30:30.64 mysqld                                                                                                                                            
16124 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.15 mysqld                                                                                                                                            
16493 16116 composit  20   0 37900  27m 2908 S    0  0.2   0:00.00 mysqld    

उपयोग की गई कुल मेमोरी लगभग 25 MB है (27 MB RES लें और साझा (SHR) घटाएं)

मैंने "किलर मायस्कल्ड" जारी करने से पहले और बाद में कुल मेमोरी उपयोग (फ्री -m, + / बफ़र्स / कैश) की जाँच करके इसे मान्य किया। सभी mysqld प्रक्रियाओं को मारने के बाद, मेमोरी का उपयोग "फ्री -एम" के अनुसार 25 एमबी तक गिर गया।

यदि आप देखते हैं कि प्रत्येक प्रक्रिया में समान VIRT, RES, और SHR कॉलम हैं, तो वे संभवतः एक ही प्रक्रिया के धागे हैं। (पुराने लिनक्स पुस्तकालयों ने कई वास्तविक प्रक्रियाओं को फैलाया है जो अनिवार्य रूप से एक ही मेमोरी पर कब्जा कर लेते हैं)

यदि वे भिन्न हैं, तो आप (RES - SHR) का SUM कर इसका अनुमान लगाने में सक्षम हो सकते हैं। लेकिन यह केवल तभी काम करता है जब प्रक्रियाएं वास्तव में अलग-अलग प्रक्रियाएं हों और केवल एक ही प्रक्रिया के धागे न हों। PPID (पेरेंट प्रोसेस आईडी) को देखने से भी मदद मिलती है। यदि वे सभी एक ही माता-पिता हैं, तो वे संभवतः केवल धागे हैं (हालांकि जरूरी नहीं)।

दुर्भाग्य से लिनक्स में इसका जवाब देने का कोई अच्छा अच्छा आसान तरीका नहीं है। एकमात्र आसान तरीका प्रक्रिया को समाप्त करने से तुरंत पहले "निशुल्क" की जांच करना और इसके तुरंत बाद फिर से जांच करना है। "- / + + बफ़र्स / कैश:" लाइन को देखें और देखें कि मेमोरी का उपयोग कितना कम हो गया है और यह आपको बताएगा कि यह कितना उपयोग कर रहा था।


2

थोड़ी मदद से man psऔर इस महान जवाब के साथ ...

ps -up $(pidof PROCESS_NAME)

उदाहरण के लिए:

[wilf@comp ~]$ ps -up $(pidof firefox)
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
wilf      1619  8.9  5.6 1464216 342396 ?      Sl   17:56   1:36 /usr/lib64/firefox/firefox
[wilf@comp ~]$ 

दूसरा तरीका:

cat /proc/$(pidof firefox)/status | grep VmSize

इसे बिना चलाया जा सकता है -xऔर tail -1:

pmap -x $(pidof firefox) | tail -1

केवल प्रतिशत दिखाता है:

top -p $(pidof firefox)

इसके अलावा, उपयोग करने के दौरान topआप iइसे पढ़ने में आसान बनाने के लिए बेकार / ज़ोंबी प्रक्रियाओं को अनदेखा करने के लिए दबा सकते हैं: बहुत छोटे शीर्ष उत्पादन


लेकिन एक आवेदन कई प्रक्रियाओं को लॉन्च करता है, मैं कैसे जान सकता हूं कि कौन सा मुख्य है?

लगता है? मुझे लगता है pmapकि PID उपयोग कर रहे संसाधनों के बारे में बहुत सारी चीजें दिखाता है। प्रक्रिया के नाम के आधार पर जानकारी दी गई है और इसका उपयोग करते हुए पीआईडी ​​पाया गया है pidof, इसलिए मुख्य प्रक्रिया को दिखाया गया है यदि आप जो भी नाम प्रदान करते हैं (मुझे लगता है, पता नहीं कि क्या यह मूल प्रक्रियाओं को वापस संदर्भित करता है)
विल्फ

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