Avatar billede nzc Nybegynder
11. marts 2004 - 12:01 Der er 11 kommentarer

Metode der returnerer hvor meget en proces belaster CPU'en i %

Hej!

Jeg kunne VIRKELIG godt tænke mig en metode der kan fortælle mig hvor meget en proces belaster CPU'en. Jeg har en metode der kan give mig den totale belastning

public static string GetCPU_Usage()
        {
            string cpuUsage = "";

            try
            {
                foreach (ManagementObject manObject in win32_Processor.Get())
                {
                    cpuUsage = manObject.Properties["LoadPercentage"].Value.ToString().Trim();               
                }
            }
            catch (Exception e)
            {
                cpuUsage = "No data available for CPU usage";
            }
            return cpuUsage;
        }

Men jeg vil gerne vide hvem det er der belaster CPU'en og hvor meget de enkelte processer hver især belaster CPU'en.

Håber i kan hjælpe :)

NZC
Avatar billede burningice Nybegynder
11. marts 2004 - 12:21 #1
tror du skal kigge på Perfomance Counter's istedet for WMI
Avatar billede clausc Nybegynder
11. marts 2004 - 12:39 #2
Check:
System.Diagnostics.Process

Vha TotalProcessorTime og f.eks DateTime.Now.Ticks kan du beregne en løbende %-sats. Ved ikke om det kan gøres lettere på anden vis.

/Claus
Avatar billede nzc Nybegynder
11. marts 2004 - 13:22 #3
cyberfessor:

hvor i performance counters? Har aldrig arbejdet med dem så jeg kender dem ikke så godt

clausc:

den metode har jeg også tænkt på men jeg synes den er en smule for omstændig. Der må være en simplere metode
Avatar billede burningice Nybegynder
12. marts 2004 - 14:33 #4
det er, som navnet antyder, perfomance counters... taget fra sdk'et (ms-help://MS.NETFrameworkSDKv1.1/cpgenref/html/gngrfperformancecounters.htm):

The .NET Framework SDK provides a set of performance counters that you can use to track the performance of an application. This section provides a list of performance counters you can find in the Performance console. For more information on the Performance console, see the Windows Help.


Eksempel:

PerformanceCounter counter = new PerformanceCounter("Process", "Acrobat");´
float belastning = counter.NextValue();

hvor "Acrobat" er navnet på din process, og den første parameter er navnet på kategorien - i dette tilfælde Process. For at få en liste over alle kategorier kan du åbne Performance Viewer'eren som ligger under Administrative Tools
Avatar billede nzc Nybegynder
13. marts 2004 - 16:06 #5
jeg har fundet følgende

PerformanceCounterCategory category    =    new PerformanceCounterCategory("Process");
Console.WriteLine(perfmem.NextValue());
        foreach (string name in category.GetInstanceNames())
        {
        PerformanceCounter perfdl    =    new PerformanceCounter("Process", "% Processor Time", name);
       
        float usage = perfdl.NextValue();
        Console.WriteLine(usage);
        }

MEN jeg får 0 ud over hele linjen :(
Avatar billede burningice Nybegynder
13. marts 2004 - 16:32 #6
hm... ja, et eller andet er der galt.. dette virker heller ikke så godt :(

PerformanceCounterCategory category = new PerformanceCounterCategory("Process");

            string[] names = category.GetInstanceNames();
   
            foreach(string name in names)
            {
                PerformanceCounter[] counters = category.GetCounters(name);

                foreach (PerformanceCounter counter in counters)
                {
                    if (counter.CounterName == "% Processor Time")
                    {
                        string write = name +": "+ counter.NextValue();

                        Console.WriteLine(write);
                    }
                }
            }
Avatar billede nzc Nybegynder
13. marts 2004 - 18:17 #7
men hva dælen gør man så ?
Avatar billede burningice Nybegynder
13. marts 2004 - 18:20 #8
jeg ved ikke lige hvad der går galt... hvis du tager RawValue får man jo fint et tal.. og andre CounterName's ser også ud til at virke...
Avatar billede nzc Nybegynder
13. marts 2004 - 18:28 #9
ye men der må jo være en måde at regne det ud på med RawValue?
Avatar billede baatmus Nybegynder
27. april 2005 - 10:26 #10
Fandt du nogensinde en løsning på dit problem med 0 værdierne i CPU usage? Jeg sidder nemlig med nøjagtig samme probblem nu!
Avatar billede lasserasch Juniormester
09. december 2006 - 14:43 #11
Hejsa, ved godt dette er en total gammel post, men jeg skriver alligevel, hvis nu en skulle ønske at se hvordan man måler aktuel performance for CPU og RAM.


Jeg har lavet følgende C# program, som kan gøre det :

http://storetasker.dk/System%20Monitor.zip

Sourcekoden kan frit downloades her :
http://storetasker.dk/Sys_Monitor_src.zip


/Lasse
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester