प्रति प्रक्रिया सीपीयू और मेमोरी का उपयोग करना


163

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

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

मैं या तो इसे तैयार करने के लिए तैयार टूल या प्रोग्रामेटिक तरीके की तलाश में हूं।

जवाबों:


167

बस प्रकार perfmonमेंStart > Run और एंटर दबाएं। प्रदर्शन विंडो खुली होने पर, ग्राफ़ में नए काउंटर जोड़ने के लिए + साइन पर क्लिक करें। काउंटरर्स इस बात के अलग-अलग पहलू हैं कि आपका पीसी कैसे काम करता है और "परफॉरमेंस ऑब्जेक्ट" नामक समूहों में समानता से समूहीकृत होता है।

अपने प्रश्नों के लिए, आप "प्रक्रिया", "मेमोरी" और "प्रोसेसर" प्रदर्शन ऑब्जेक्ट चुन सकते हैं। फिर आप वास्तविक समय में इन काउंटरों को देख सकते हैं

आप बाद में अपने निरीक्षण के लिए प्रदर्शन डेटा को बचाने के लिए उपयोगिता भी निर्दिष्ट कर सकते हैं। ऐसा करने के लिए, बाएं हाथ के पैनल में "प्रदर्शन लॉग और अलर्ट" चुनें। (यह सिस्टम मॉनीटर कंसोल के तहत सही है जो हमें उपर्युक्त काउंटरों के साथ प्रदान करता है। यदि यह नहीं है, तो "फ़ाइल"> "स्नैप-इन जोड़ें" पर क्लिक करें, सूची में "प्रदर्शन लॉग और अलर्ट" जोड़ें पर क्लिक करें और चुनें। "।" प्रदर्शन लॉग और अलर्ट "से," काउंटर लॉग्स "के तहत एक नया मॉनिटरिंग कॉन्फ़िगरेशन बनाएं। फिर आप काउंटरों को जोड़ सकते हैं, नमूना दर, लॉग प्रारूप (द्विआधारी या सादे पाठ) और लॉग स्थान निर्दिष्ट कर सकते हैं।


1
काउंटर लॉग में डेटा सैंपल को हथियाने के लिए आदर्श अंतराल क्या है?
स्टीफ रोज

8
MS ने स्पष्ट रूप से UI को PerformanceMonitor में बदल दिया है क्योंकि आपने यह लिखा है। किसी भी विचार आप विंडोज 2008 R2 में यह कैसे करते हैं?
मार्टिन ब्राउन

5
@MartinBrown - यह मिला । उत्कृष्ट है।
जेएनएफ

2
किसी को पता है कि विस्टा पर लॉग को बचाने का दूसरा भाग कैसे करना है? कहीं भी "प्रदर्शन लॉग और अलर्ट" प्रतीत नहीं होते हैं
Xitcod13

11
डेटा संग्राहक सेट पर राइट क्लिक करें-> उपयोगकर्ता निर्धारित। नया-> डेटा कलेक्टर सेट चुनें। इसे एक नाम दें और मैन्युअल रूप से बनाएं चुनें। अगला पर क्लिक करें। प्रदर्शन काउंटर का चयन करें। अगला पर क्लिक करें। प्रदर्शन काउंटर जोड़ें और नमूना अंतराल दर्ज करें। फिर डेटा कलेक्टर सेट्स के तहत आप अपने सेट पर राइट क्लिक करें और "स्टार्ट" पर क्लिक करें। कुछ समय बाद आप अपने सेट पर राइट क्लिक करें और "स्टॉप" पर क्लिक करें। फिर आप रिपोर्ट-> उपयोगकर्ता निर्धारित-> आपका सेट के तहत रिपोर्ट पा सकते हैं। ग्राफ़ पर राइट क्लिक करें और डेटा के रूप में सहेजें का चयन करें।
ग्रेमियो

43

प्रोसेस एक्सप्लोरर एक प्रक्रिया द्वारा लिया गया कुल सीपीयू समय दिखा सकता है, साथ ही प्रति प्रक्रिया एक इतिहास ग्राफ भी।


3
तो आप इसे एक प्रक्रिया को खोजने के लिए कैसे उपयोग करेंगे जो एक छोटी फट में अधिक मेमोरी या प्रोसेसर पावर का उपयोग करना शुरू कर देता है। क्या आप विस्तृत कर सकते हैं?
Xitcod13

कॉलम हेडर पर राइट क्लिक करें, सेलेक्ट कॉलम चुनें, फिर "प्रोसेस परफॉर्मेंस" के तहत "सीपीयू हिस्ट्री" चेक करें
लौरेंट

क्या आप इसे शून्य पर रीसेट कर सकते हैं?
साइमन_वेक

क्या मैं किसी दिए गए PID की मेमोरी खपत फ़ाइल में लॉग इन कर सकता हूं?
रॉय

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

19

Perfmon.exe का उपयोग करते हुए, मैंने मेमोरी उपयोग को ट्रैक करने के लिए "प्रोसेस" काउंटर के तहत "प्राइवेट बाइट्स" काउंटर का उपयोग करने की कोशिश की है और यह अच्छी तरह से काम करता है।


1
यह सही जवाब है। आप प्रक्रिया के तहत सीपीयू जानकारी भी प्राप्त कर सकते हैं। प्रक्रिया पर क्लिक करें, फिर चयनित ऑब्जेक्ट के उदाहरणों के तहत अपने एप्लिकेशन (अपने उदाहरण में फ़ायरफ़ॉक्स) का चयन करें।
क्रिस मैककोवन

11

शायद आप इसका उपयोग कर सकते हैं। यह आपके लिए काम करना चाहिए और निर्दिष्ट प्रक्रिया के लिए प्रोसेसर समय की रिपोर्ट करेगा।

@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.

7

मैं सहमत हूं, perfmon.exe आपको मॉनिटर करने के लिए किसी भी प्रक्रिया के लिए काउंटर (राइट पैनल पर राइट क्लिक) को जोड़ने की अनुमति देता है।

प्रदर्शन ऑब्जेक्ट: प्रक्रिया की जाँच करें "सूची से उदाहरण चुनें" और फ़ायरफ़ॉक्स चुनें।


1
धन्यवाद। मैं एक घंटे की तरह, पूर्व-परिभाषित समय पर सीपीयू के उपयोग का इतिहास कैसे देख सकता हूं?
एली बेंडरस्की

6

WMI विंडोज मैनेजमेंट इंस्ट्रूमेंटेशन है, और यह विंडोज के सभी हाल के संस्करणों में बनाया गया है। यह आपको CPU उपयोग, डिस्क I / O, और मेमोरी उपयोग जैसी चीजों को प्रोग्राम करने के लिए अनुमति देता है।

Perfmon.exe इस इंटरफ़ेस का एक GUI फ्रंट-एंड है, और एक प्रक्रिया की निगरानी कर सकता है, लॉग को जानकारी लिख सकता है, और आपको तथ्य के बाद लॉग का विश्लेषण करने की अनुमति दे सकता है। यह दुनिया का सबसे सुंदर कार्यक्रम नहीं है, लेकिन यह काम पूरा करता है।


5
तकनीकी रूप से परफॉमेंस अंतर्निहित विंडोज परफॉर्मेंस काउंटर एपीआई का एक इंटरफेस है जो कई वर्षों से WMI को पूर्वनिर्धारित करता है। WMI अपने नामस्थान के भीतर प्रदर्शन काउंटर API को भी उजागर करता है।
रोब वॉकर

2

प्रोसेस लैसो को प्रोसेस ऑटोमेशन और प्राथमिकता वर्ग अनुकूलन के लिए अधिक डिज़ाइन किया गया है, न कि ग्राफ़ के लिए। जैसा कि कहा गया है, यह करता है प्रस्ताव प्रति प्रक्रिया CPU उपयोग इतिहास (ग्राफ पर एक सफेद लाइन के रूप में तैयार), लेकिन यह करता है नहीं प्रति प्रक्रिया स्मृति उपयोग इतिहास प्रदान करते हैं।

अस्वीकरण: मैं प्रोसेस लासो का लेखक हूं, लेकिन मैं वास्तव में इसे यहां समर्थन नहीं कर रहा हूं - क्योंकि बेहतर समाधान हैं (परफ्यूम सबसे अच्छा है)।

अब तक की सबसे अच्छी चीज है Windows Vista + संसाधन और प्रदर्शन मॉनिटर। यह समय के साथ प्रक्रियाओं द्वारा सीपीयू, मेमोरी, नेटवर्क और डिस्क एक्सेस के उपयोग को ट्रैक कर सकता है। यह एक महान समग्र प्रणाली सूचना उपयोगिता है जिसे बहुत पहले बनाया जाना चाहिए था। जब तक मैं गलत नहीं हूँ, यह समय के साथ प्रति-प्रक्रिया CPU और मेमोरी उपयोग को ट्रैक कर सकता है (सूचीबद्ध अन्य चीजों के बीच)।


2

आप CMI / पर्ल / जावा स्क्रिप्ट का उपयोग करके WMI कमांड का उपयोग करके डेटा प्राप्त करने का भी प्रयास कर सकते हैं, और नीचे इसके लिए चरण दिए गए हैं।

हमें 2 WMI चयन क्वेरी निष्पादित करने और CPU% उपयोग सूत्र लागू करने की आवश्यकता है

1. तार्किक प्रक्रिया की कुल संख्या को पुनः प्राप्त करने के लिए

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. PercentProcessorTime के मानों को पुनः प्राप्त करने के लिए, TimeStamp_Sys100NS (सीपीयू उपयोग सूत्र को वास्तविक उपयोग प्रतिशत प्राप्त करने के लिए लागू किया गया है) और वर्कसेटसेट्री (रैम) 1 सेकंड के नींद अंतराल के साथ न्यूनतम 2 बार।

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. सीपीयू% उपयोग सूत्र लागू करें

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

P2 ने दूसरी बार PercentProcessorTime को पुनः प्राप्त करने का संकेत दिया, और P1 ने पहली बार प्राप्त किए गए PercentProcessorTime को इंगित किया, T2 और t1 TimeStamp_Sys100NS के लिए है।

इसके लिए एक नमूना पर्ल कोड लिंक में पाया जा सकता है http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-use-perl-via-wmi/

यह तर्क उन सभी प्रोग्रामिंग भाषा के लिए लागू होता है जो WMI प्रश्नों का समर्थन करती हैं


WMI और पॉवर्सशेल?
20

2

हालाँकि मैंने यह कोशिश नहीं की है, ProcDump एक बेहतर समाधान की तरह लगता है।

साइट से विवरण:

ProcDump एक कमांड-लाइन यूटिलिटी है जिसका प्राथमिक उद्देश्य सीपीयू स्पाइक्स के लिए एक एप्लिकेशन की निगरानी कर रहा है और स्पाइक के दौरान क्रैश डंप उत्पन्न करता है जिसका उपयोग कोई व्यवस्थापक या डेवलपर स्पाइक के कारण को निर्धारित करने के लिए कर सकता है। ProcDump में त्रिशंकु विंडो मॉनीटरिंग (विंडो हैंग की उसी परिभाषा का उपयोग करना जिसमें Windows और टास्क मैनेजर का उपयोग होता है), बिना किसी अपवाद के मॉनीटरिंग मॉनिटरिंग और सिस्टम प्रदर्शन काउंटरों के मानों के आधार पर डंप उत्पन्न कर सकते हैं। यह एक सामान्य प्रक्रिया डंप उपयोगिता के रूप में भी काम कर सकता है जिसे आप अन्य स्क्रिप्ट में एम्बेड कर सकते हैं।





1

विंडोज 10 के तहत, टास्क मैनेजर आपको संचयी सीपीयू घंटे दिखा सकता है। "ऐप हिस्ट्री" टैब और "डिलीट यूज़ हिस्ट्री" के सिरमौर। अब एक या दो घंटे के लिए चीजों को छोड़ दें:

विंडोज 10 संचयी सीपीयू समय

यह क्या नहीं करता है टैब द्वारा ब्राउज़रों में उपयोग को तोड़ना है। अक्सर निष्क्रिय टैब काम का एक जबरदस्त मात्रा में होगा, प्रत्येक खुले टैब में ऊर्जा का उपयोग करके और अपने पीसी को धीमा कर देगा।


1

कुछ विशिष्ट विंडोज़ सर्वरों की स्थिति और सीपीयू / मेमोरी उपयोग प्राप्त करने की आवश्यकता थी। मैंने स्क्रिप्ट के नीचे उपयोग किया:

यह विंडोज सर्च सर्विस का एक उदाहरण है।

  $cpu = Get-WmiObject win32_processor
  $search = get-service "WSearch"
  if ($search.Status -eq 'Running')
  {
  $searchmem = Get-WmiObject Win32_Service -Filter "Name = 'WSearch'"
  $searchid = $searchmem.ProcessID
  $searchcpu1 = Get-WmiObject Win32_PerfRawData_PerfProc_Process | Where {$_.IDProcess -eq $searchid}
  Start-Sleep -Seconds 1
  $searchcpu2 = Get-WmiObject Win32_PerfRawData_PerfProc_Process | Where {$_.IDProcess -eq $searchid}
  $searchp2p1 = $searchcpu2.PercentProcessorTime - $searchcpu1.PercentProcessorTime
  $searcht2t1 = $searchcpu2.Timestamp_Sys100NS - $searchcpu1.Timestamp_Sys100NS
  $searchcpu = [Math]::Round(($searchp2p1 / $searcht2t1 * 100) /$cpu.NumberOfLogicalProcessors, 1)
  $searchmem = [Math]::Round($searchcpu1.WorkingSetPrivate / 1mb,1)
  Write-Host 'Service is' $search.Status', Memory consumed: '$searchmem' MB, CPU Usage: '$searchcpu' %'
  }

  else
  {
  Write-Host Service is $search.Status -BackgroundColor Red
  }

0

मैं सीपीयू / रैम / आईओ गति के इतिहास ग्राफ के लिए टास्किनफो का उपयोग करता हूं। http://www.iarsn.com/taskinfo.html

लेकिन गैर-इरादतनता के फटने, एक फाल्ट एचडी / एसएस ड्राइव के कारण बाधित समय की तरह लगता है।

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