मुझे समग्र सिस्टम के साथ-साथ एक विशिष्ट प्रक्रिया के लिए सीपीयू और रैम उपयोग की गणना करने की आवश्यकता है। मैंने इसे सी # में कभी नहीं किया है। तो मैं निम्नलिखित कोड के साथ आने में सक्षम था (है कि मैं इस वेब साइट पर नमूनों से मुख्य रूप से लिया):सी # प्रदर्शन काउंटर डेटा "मानचित्र पर सभी"
try
{
Process proc = Process.GetCurrentProcess();
string strProcName = proc.ProcessName;
Console.WriteLine("Process: " + strProcName);
using (PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total", true))
{
using (PerformanceCounter process_cpu = new PerformanceCounter("Process", "% Processor Time", strProcName, true))
{
for (; ;)
{
Console.CursorTop = 1;
Console.CursorLeft = 0;
float t = total_cpu.NextValue()/Environment.ProcessorCount;
float p = process_cpu.NextValue()/Environment.ProcessorCount;
Console.WriteLine(String.Format("Total CPU (%) = {0}\t\t\nApp CPU (%) = {1}\t\t\nApp RAM (KB) = {2}",
t, p, Process.GetCurrentProcess().WorkingSet64/(1024)
));
System.Threading.Thread.Sleep(100);
}
}
}
}
catch(Exception ex)
{
Console.WriteLine("Exception: " + ex);
}
लेकिन क्या यह मुझे देता है डेटा "सभी नक्शे पर"। एक नज़र डालें:
यह प्रदर्शन काउंटर चल की तरह लगता है द्वारा एक बहुत महंगा ऑपरेशन है:
तो किसी को इन बातों का जवाब दे सकते स्वयं - यह लगभग 5% तक CPU उपयोग बढ़ाता है। मैंने सी ++ के साथ सीपीयू काउंटर का एक टन किया और वे चलाने के लिए बहुत अधिक CPU समय नहीं लेते।
इसके अलावा मैंने जो कहा है उसके अलावा, पहली बार लूप ऊपर 2 सेकंड देरी के साथ चलता है! यह सचमुच 2 सेकंड के लिए लटकता है। क्या यह सामान्य है? अगर ऐसा है, मैं विश्वास नहीं कर सकता कि वे इसे एक प्रदर्शन काउंटर :) कॉल करने के लिए एक दुस्साहस था
हालांकि मेरी रैम पढ़ने सुंदर एक कार्य प्रबंधक द्वारा रिपोर्ट के करीब है, सीपीयू उत्पादन पूरी तरह से है बंद। क्या कोई मुझे बता सकता है कि मैं यहाँ क्या गलत कर रहा हूं? आदि
% Processor Time
,_Total
,:इसके अलावा, मैं PerformanceCounter class के लिए किसी भी प्रलेखन, कि इन सब की व्याख्या कर सकते हैं नहीं कर पा रहे? और सबसे महत्वपूर्ण बात यह है कि वे केवल अंग्रेजी हैं? क्या उन्हें स्थानीयकृत किया जाना चाहिए?
प्रक्रिया इसके नाम से निर्दिष्ट है। लेकिन अगर मेरे पास एक ही नाम के तहत एक से अधिक प्रक्रियाएं चल रही हैं तो क्या होगा। फिर क्या?