Holen Sie sich die CPU-und RAM-Auslastung

Ich brauche, um den ram-Speicher und CPU-Auslastung während der Ausführung eines Prozesses (der Prozess kann laufen, und manchmal über 30 Minuten). Ich bin in der Lage, um die freien RAM, aber die CPU-Auslastung nicht korrekt ist, verglichen mit dem Wert aus der task-manager. Mache ich etwas falsch? Hier ist mein code:

class Program
{
    static List<float> AvailableCPU = new List<float>();
    static List<float> AvailableRAM = new List<float>();

    protected static PerformanceCounter cpuCounter;
    protected static PerformanceCounter ramCounter;
    static void Main(string[] args)
    {
        cpuCounter = new PerformanceCounter();
        cpuCounter.CategoryName = "Processor";
        cpuCounter.CounterName = "% Processor Time";
        cpuCounter.InstanceName = "_Total";

        ramCounter = new PerformanceCounter("Memory", "Available MBytes");

        try
        {
            System.Timers.Timer t = new System.Timers.Timer(1200);
            t.Elapsed += new ElapsedEventHandler(TimerElapsed);
            t.Start();
            Thread.Sleep(10000);
        }
        catch (Exception e)
        {
            Console.WriteLine("catched exception");
        }
        Console.ReadLine();

    }

    public static void TimerElapsed(object source, ElapsedEventArgs e)
    {
        float cpu = cpuCounter.NextValue();
        float ram = ramCounter.NextValue();
        Console.WriteLine(string.Format("CPU Value: {0}, ram value: {1}", cpu, ram));
        AvailableCPU.Add(cpu);
        AvailableRAM.Add(ram);
    }

}

Aber wenn ich das Programm laufen lassen, hier ist, was es auf der Konsole ausgegeben, verglichen mit Werten aus dem task-manager:
Holen Sie sich die CPU-und RAM-Auslastung

Was mache ich falsch?

Es schwankt auf dem display an - vielleicht sind Sie beim Vergleich verschiedener Zeiträume? Sie haben ein 2,7-Wert...
Ich habe eine Methode zum simulieren von cpu-Last und Werte sind nicht einmal annähernd mit denen aus der task-manager. Ich lese die Werte einmal pro Sekunde. Ich vermute, dass dies möglicherweise aufgrund der multi-core-cpu, aber ich bin mir noch nicht sicher...

InformationsquelleAutor Buda Gavril | 2015-10-28

Schreibe einen Kommentar