कैसे जांच करें कि कौन सी प्रक्रिया सबसे अधिक मेमोरी का उपयोग कर रही है


33

जब मैं freeप्रोडक्ट सर्वर में से एक में जाँच करता हूँ तो यह 70% मेमोरी दिखा रहा है:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

लेकिन मुझे नहीं पता था कि मेमोरी का उपयोग करने वाली प्रक्रिया क्या है, मैंने topकमांड की कोशिश की और यह केवल 1.1 और 5.4% मेमोरी का उपयोग करके प्रक्रिया दिखा रहा है

मैं कैसे पा सकता हूं कि कौन सी प्रक्रिया मेमोरी का उपयोग कर रही है?

नीचे शीर्ष आदेश परिणाम हैं:

15085 couchbas  25   0 2784m 2.4g  40m S 183.7  1.5 299597:00 beam.smp
28248 tibco     18   0  124m 100m 3440 S 20.9  0.1   2721:45 tibemsd
15334 couchbas  15   0 9114m 8.6g 3288 S  9.0  5.4  12996:28 memcached
15335 couchbas  18   0  6024  600  468 S  2.0  0.0   1704:54 sigar_port
15319 couchbas  15   0  775m 2516  944 S  0.7  0.0 269:13.41 i386-linux-godu
12167 tibco     16   0 11284 1464  784 R  0.3  0.0   0:00.04 top
12701 root      15   0  451m 427m 2140 S  0.3  0.3  18:25.02 controller
13163 root      11  -5     0    0    0 S  0.3  0.0 289:58.58 vxglm_thread


त्वरित प्रतिक्रिया के लिए धन्यवाद, क्या सभी खुली हुई फाइलों की जांच करने का कोई तरीका है और कौन सी फाइल मेमरी खा रही है।

1
शीर्ष आउटपुट को सॉर्ट करने का प्रयास करें - दौड़ते समय, शिफ्ट + एम
ईनोकु

जवाबों:


50

यह आपको शीर्ष 10 प्रक्रिया दिखाएगा जो सबसे अधिक मेमोरी का उपयोग करता है:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

शीर्ष का उपयोग करना: जब आपने शीर्ष दबाया mतो स्मृति उपयोग के आधार पर छोटी प्रक्रिया होगी।

लेकिन यह आपकी समस्या का समाधान नहीं करेगा, लिनक्स में सब कुछ फ़ाइल या प्रक्रिया है। इसलिए आपके द्वारा खोली गई फ़ाइलें मेमोरी भी खाएंगी। तो यह मदद नहीं करेगा।

lsof आपको फ़ाइल के आकार या बाइट्स में फ़ाइल ऑफ़सेट के साथ सभी खोली गई फ़ाइलें देगा।


5
आप headइस awk स्क्रिप्ट के बजाय उपयोग कर सकते हैं - यह एक ही आउटपुट देता है और आप अपने आप को कई अजीब अक्षर लिखने से बचाते हैं।
स्टायरोफोम

9

आपका राम वास्तव में इस्तेमाल नहीं किया गया है। लिनक्स डिफ़ॉल्ट रूप से आपकी डिस्क पर मौजूद सामान को कैश करता है, और यह राम के "उपयोग" खंड में कैश करता है।

यदि आप उन अनुप्रयोगों को लोड करते हैं जो वास्तव में उस रैम का उपयोग करते हैं, तो यह उनके उपयोग के लिए होगा।

Http://www.linuxatemyram.com/ देखें


लिनक्स के बारे में कुछ भी किसने कहा?
तीमुथियुस पुलिअम

ओपी में एक "i386-linux-godu" प्रक्रिया चल रही है
जीन-माइकेल सेलेरियर

6

आप सबसे अधिक मेमोरी का उपयोग करके प्रक्रिया को प्राप्त करने के लिए ps और सॉर्ट कर सकते हैं । यह आपको अन्य प्रक्रिया विवरणों को भी निर्दिष्ट करने की अनुमति देगा जो आप इसके साथ देखना चाहते हैं:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

पुनश्च: उपरोक्त मानता है कि आपकी मेमोरी कॉलम पहले " सॉर्ट -क 1 एन-आर " है


3

आप यह देखने के लिए कमांड स्लैबटॉप का उपयोग कर सकते हैं कि कर्ब द्वारा स्लैब ऑब्जेक्ट का उपयोग किया जाता है।
इसके अलावा आप / proc / meminfo का आउटपुट चेक कर सकते हैं

आउटपुट में इन 2 लाइनों को देखें

Slab:              68136 kB
SReclaimable:      21208 kB 

उपरोक्त उदाहरण से पता चलता है कि 68 एमबी स्लैब कैश कर्नेल द्वारा उपयोग किया जा रहा है और 21 एमबी को पुनः प्राप्त किया जा सकता है। पुनः प्राप्त करने के लिए आप यहाँ वर्णित तकनीक का उपयोग कर सकते हैं https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide-#s-memory-tunables

echo 2 > /proc/sys/vm/drop_caches  

1

एक इंटरेक्टिव विश्लेषण के लिए, आप सॉर्ट-ऑर्डर चुनने के लिए htopफंक्शन की F6को हिट कर सकते हैं , उदाहरण के लिए PERCENT_CPU(percents में मेमोरी का उपयोग), M_RESIDENT(निवासी मेमोरी साइज़, असली मेमोरी जो उपयोग की जाती है), M_SIZE(वर्चुअल मेमोरी साइज़) या M_SHARE(आकार का आकार) शेयर्ड मेमोरी)। पहले दो प्रासंगिक संख्याएं हैं

हरी रेखाएँ धागे हैं। हिट (ऊपरी मामला) Kऔर Hउन्हें छिपाने के लिए।

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