मशीन को हॉगिंग करने की प्रक्रिया (तों) का पता कैसे लगाएं


10

परिदृश्य: अचानक, मेरा कंप्यूटर सुस्त महसूस करता है। माउस चलता है लेकिन खिड़कियां खुलने में उम्र लेती हैं, आदि uptimeकहते हैं कि लोड 7.69 और बढ़ा है।

यह पता लगाने का सबसे तेज़ तरीका क्या है कि कौन सी प्रक्रिया (तों) लोड का कारण हैं?

अब, "शीर्ष" और इसी तरह के उपकरण का जवाब नहीं है क्योंकि वे या तो सीपीयू या मेमोरी उपयोग दिखाते हैं लेकिन एक ही समय में दोनों नहीं। मुझे जो चाहिए वो है सिंगल कमांड जिसे मैं टाइप कर सकता हूं जैसा कि होता है - ऐसा कुछ जो किसी भी तरह का पता लगाएगा

सिस्टम डिस्क में 8GB RAM स्वैप करने की कोशिश कर रहा है क्योंकि X ...

या

एक्स की प्रक्रिया डिस्क पर होती है

या

प्रक्रिया X 400% CPU का उपयोग करता है "

तो मैं जो ढूंढ रहा हूं वह है आईओसैट, htop / atop और इसी तरह के उपकरण एक आउटपुट में इस तरह से चलते हैं:

 1235 cp - Disk trashing
   87 chrome - Uses 2 GB of RAM
  137 nfs_bench - Uses 95% of the network bandwidth

मुझे ऐसा टूल नहीं चाहिए जो मुझे कुछ नंबर दे, जिसका मैं विश्लेषण कर सकता हूं, लेकिन एक टूल जो मुझे बताता है कि कौन सी प्रक्रिया वर्तमान लोड का कारण बनती है। मान लें कि कीबोर्ड के सामने उपयोगकर्ता मुश्किल से "प्रक्रिया" लिखना जानता है, लेकिन "निवासी आकार", "वर्चुअल मेमोरी" या "प्रक्रिया जीवन चक्र" की बात आने पर उपयोगकर्ता जल्दी से अभिभूत हो जाता है।

मेरा तर्क इस तरह से है: एक उपयोगकर्ता एक समस्या को नोटिस करता है। हजारों कारण हो सकते हैं ... ठीक है, लगभग :-) उपयोगकर्ता समस्या के स्रोत को जानना चाहता है।

वर्तमान समाधान मुझे बहुत सारे नंबर देते हैं, और मुझे यह जानना होगा कि इन संख्याओं का क्या मतलब है। मैं जो देख रहा हूं वह मेटा टूल है। डेटा का 99% समस्या के लिए अप्रासंगिक है। तो उपकरण को क्या करना चाहिए प्रक्रियाओं के लिए देखो जो कुछ संसाधन को हॉग करते हैं और केवल उन लोगों को सूचीबद्ध करते हैं जिनके साथ "इस प्रक्रिया को बहुत अधिक सीपीयू की आवश्यकता होती है, यह कई आईआरक्यू का उत्पादन करता है, यह प्रक्रिया बहुत अधिक रैम आवंटित करती है (और यह अभी भी बढ़ रही है")।

यह अपेक्षाकृत कम सूची होगी। किसी नए व्यक्ति के लिए इस सूची से अपराधी का पता लगाना अधिक सरल होगा, के आउटपुट की तुलना में, htopजो मुझे लगभग 5000 नंबर देता है , लेकिन मुझे स्वयं बहु-थ्रेडेड प्रक्रियाओं को मोड़ने की आवश्यकता है (मेरे पास 50 लाइनें हैं जो कहती हैं VIRT 2750Mलेकिन केवल 16 जीबी रैम - मशीन को खुद को मौत के लिए स्वैप करना चाहिए लेकिन निश्चित रूप से, यह उस डेटा की गलत व्याख्या है जो जल्दी से हो सकता है)।


मैं क्यों नहीं देख रहा हूँ। आपके द्वारा वर्णित लक्षण एक डिस्क कचरा नहीं हैं (माउस को प्रभावित नहीं करेगा)। सुस्त माउस पूरी क्षमता पर क्लासिक सीपीयू है।
soandos

1
यह सिर्फ एक उदाहरण है। कृपया इसे नमक के दाने के साथ लें। कल्पना कीजिए कि एक noob कंप्यूटर के सामने बैठा है जो कुछ भी नहीं जानता है। वह कैसे आसानी से पता लगा सकता है कि क्या चल रहा है (यानी आधे घंटे तक बिना खर्च किए क्या topमतलब है)
हारून डिगुल्ला

क्या आप एक gui और सब कुछ, या कुछ और के साथ कार्य प्रबंधक के समकक्ष एक लिनक्स की तलाश कर रहे हैं?
soandos

मैं कुछ खोजता हूं जो मैं चलाता हूं और जो कहता है "प्रोसेस एक्स मशीन को हॉगिंग कर रहा है"।
आरोन दिगुल्ला

जवाबों:


3

मुझे प्रतिक्रियाओं पर मुस्कुराना होगा क्योंकि प्रत्येक ने आपको टूल एक्स चलाने के लिए कहा था। एकमात्र समस्या यह है कि आप जो देख रहे हैं वह रुक-रुक कर है और किसी भी चीज़ को सहसंबद्ध करने का कोई तरीका नहीं होगा। यदि आप इसे उच्च पर्याप्त आवृत्ति पर चलाते हैं, तो सर जैसा उपकरण मदद कर सकता है, लेकिन मेरा दावा है कि कलेक्ट और भी बेहतर है।

सर की तरह , आप इसे आरपीएम और इंस्टाल करके एक डेमॉन के रूप में चलाते हैं /etc/init.d/collectl start

अब जब आप कुछ सुस्त देखेंगे, collectl -p /var/log/collectl/filename --topतो डेटा वापस खेलेंगे और आपको शीर्ष प्रक्रियाएँ दिखाएंगे। तुम भी बस चला सकते थे collectl --topऔर उन्हें वास्तविक समय में देख सकते थे। BTW - कुछ भी आप वास्तविक समय में कर सकते हैं आप प्लेबैक भी कर सकते हैं।

सीपीयू लोड के लिए के रूप में, क्या होगा अगर आप इंटरप्ट के साथ अतिभारित हो रहे हैं? collectl -sCन केवल व्यक्तिगत सीपीयू (या -scऔसत लोड के लिए उपयोग ) पर लोड दिखाएगा, यह दिखाएगा कि वे अपना समय कैसे व्यतीत कर रहे हैं। शामिल करें -j( -scj) और आप इंटरप्ट / सीपीयू की संख्या देखेंगे। अपरकेस का उपयोग करें -Jऔर आप प्रत्येक रुकावट / सीपीयू के प्रकार देखेंगे।

बेशक, अगर आप वास्तव में vmstat को पसंद करते हैं, तो आप हमेशा सामूहिक डेटा प्लेबैक कर सकते हैं --vmstatऔर यह vmstat प्रारूप में ऐतिहासिक डेटा दिखाएगा।

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


धन्यवाद; यह बिल्कुल वैसा नहीं है जैसा मैं देख रहा था, लेकिन कम से कम यह एक अच्छा शुरुआती बिंदु है।
एरोन डिगुल्ला

शानदार उपकरण! और उबंटू पर (कम से कम 12.04 के बाद से) आपको बस पैकेज को स्थापित करना होगा - यह स्वचालित रूप से स्थापित होने पर और उसके बाद रीबूट पर डेमॉन शुरू करता है :)
nealmcb

6

"शीर्ष" तब तक उचित रूप से काम करता है, जब तक आप सही संख्या में देखते हैं। चलो देखते हैं:

top - 13:11:45 up 13 days,  1:13, 21 users,  load average: 0.06, 0.11, 0.26
Tasks: 271 total,   2 running, 267 sleeping,   0 stopped,   2 zombie
Cpu(s): 19.0%us,  6.3%sy,  0.0%ni, 74.0%id,  0.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   8183668k total,  8002712k used,   180956k free,    12476k buffers
Swap: 11847900k total,   723480k used, 11124420k free,   767016k cached

अब, यदि सिस्टम धीमा है क्योंकि CPU सभी लिया गया है, यह "Cpu (s) पर" हमें "और" sy "कॉलम दिखाता है:" पंक्ति एक साथ 100% के करीब है।

यदि यह स्वैपिंग के कारण धीमा है, तो "मेम:" "नि: शुल्क" बहुत कम मान दिखाता है और "स्वैप:" "उच्च" मानों का उपयोग करता है।

यदि यह सामान्य रूप से I / O के कारण धीमा है , तो "Cpu (s):" "वा" बताता है कि I / O प्रतीक्षा पर समय व्यतीत होता है।

अब, यदि आप जानते हैं कि I / O वेट की समस्या है, तो आप यह जानने के लिए प्रोग्राम "iotop" का उपयोग कर सकते हैं कि कौन सी प्रक्रियाएं I / O बनाती हैं।


+1 लेकिन मैं एक ऐसे टूल की तलाश में हूं जो मेरे लिए यह विश्लेषण करता है और इस प्रक्रिया को प्रिंट करता है और साथ ही कुछ जानकारी जो गलत है। मैं "कच्चे" आंकड़े से इकट्ठा नहीं करना चाहता। कुछ भी?
आरोन दिगुल्ला

1
मुझे खेद है, लेकिन आप बुनियादी स्तर पर भिन्नता के बिना मशीन सुस्ती जैसी समस्याओं को हल नहीं कर सकते हैं। यदि ऐसे उपकरण मौजूद हैं, तो मुझे उनके बारे में पता नहीं है; सबसे अधिक संभावना है कि आपको एक सक्षम कंप्यूटर व्यवस्थापक / सर्विसिंग लड़का चाहिए।
Zds

यह अच्छा होगा यदि ऐसा उपकरण मौजूद है क्योंकि यह निश्चित रूप से स्वचालित रूप से निर्धारित करना संभव है: अगर मैं इसके आउटपुट से बता सकता हूं top, तो कंप्यूटर कर सकता है। यह मोना लिसा की मुस्कान नहीं है, यह केवल "खराब" लोगों को खोजने के लिए कुछ संख्याओं में कमी कर रहा है।
एरोन डिगुल्ला

2

400% उपयोग के आधार पर, मैं मान लूंगा कि आपके पास क्वाड-कोर प्रोसेसर है। आपकी लोड औसत क्षमता लगभग दोगुनी है और आधी प्रक्रिया सीपीयू की प्रतीक्षा कर रही है।

पहले, reniceएक अधिक उत्तरदायी प्रणाली प्राप्त करने के लिए आपका शेल 0 या -10 तक, और फिर htopआपत्तिजनक प्रक्रिया (तों) को खोजने के लिए उपयोग करें और straceकिसी दिए गए प्रक्रिया का पालन करें । अन्य उपकरण जो उपयोगी हो सकते हैं वे हैं:

  • vmsat
  • sar
  • iostat
  • pmap

1

एक सुस्त माउस बहुत अधिक रुकावट लोड के कारण भी हो सकता है, या, USB नियंत्रक बहुत व्यस्त हैं (मुझे लगता है कि यह एक यूएसबी माउस है)।


कोई भी उपकरण जो मुझे बताता है कि कौन सा ड्राइवर / घटक उच्च IRQ लोड का कारण बनता है?
एरोन दिगुल्ला

1

vmstat आपको सामान्य शब्दों में मदद कर सकता है। उपयोग का एक उदाहरण है:

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 977908 426184 1543884    0    0    38    45  106  385  4  1 95  1

आप इसे हर एक्स सेकंड में भी चला सकते हैं - कमांड के बाद बस नंबर एक्स को जोड़ें।

संपादित करें: टिप्पणी को ध्यान में रखते हुए ... एक फ़ाइल के लिए निम्नलिखित लिखें और उस फ़ाइल को निष्पादन योग्य बनाएं। यह आपको मशीन पर शीर्ष 3 प्रक्रियाओं को बताएगा।

top -n 1 | tail -16 | head -4 | awk '{print $13}'

यदि आप यह जानना चाहते हैं कि सीपीयू के विपरीत किस मेमोरी ने हॉगिंग की है, तो शीर्ष मैन पेज पढ़ें और डिस्प्ले का क्रम बदल दें।


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