2012-09-01 7 views
5

私は、CPU使用率など、コンピュータのさまざまなリソースを監視するプログラムを作成しています。私はGPUの使用量(温度ではなくGPUの負荷)も監視したい。GPUの読み込みはどうすればできますか?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Diagnostics; 
using DannyGeneral; 


namespace CpuUsage 
{ 
    public partial class Form1 : Form 
    { 
     private bool processEnded; 
     private Process[] processList; 
     private string timeStarted; 
     private string timeEnded; 
     private List<float> processValues; 
     private bool alreadyRun; 
     private DateTime dt; 
     private DateTime dt1; 
     private PerformanceCounter theCPUCounter; 
     private PerformanceCounter theMemCounter; 
     private PerformanceCounter specProcessCPUCounter; 
     private float cpuUsage; 
     private float memUsage; 
     private List<float> Values; 

     public Form1() 
     { 
      InitializeComponent(); 

      processEnded = false; 
      processList = Process.GetProcesses(); 
      for (int i = 0; i < processList.Count(); i++) 
      { 
       listView1.Items.Add(processList[i].ProcessName); 
      } 
      processValues = new List<float>(); 
      alreadyRun = false; 
      dt = DateTime.Now; 


      Values = new List<float>(); 
       theCPUCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); 
       theMemCounter = new PerformanceCounter("Memory", "Available MBytes"); 
       specProcessCPUCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName); 

       Logger.Write("The Program Started At *** " + DateTime.Now.ToShortTimeString()); 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      memUsage = theMemCounter.NextValue(); 
      label1.Text = memUsage.ToString(); 
      Logger.Write("Memory Usage " + memUsage.ToString()); 
      cpuUsage = this.theCPUCounter.NextValue(); 
      label2.Text = cpuUsage.ToString(); 
      Logger.Write("Cpu Usage " + this.cpuUsage.ToString()); 
      Values.Add(cpuUsage); 
      isProcessRunning(); 
      if (alreadyRun == true) 
      { 
       processValues.Add(cpuUsage); 
      } 

     } 
+2

今後の質問については、関連するコードのみを使用してサンプルを小さくすることを検討してください。あなたの現在のものは、単純な 'Console.Write(" CPU使用率:{0} "、新しいPerformanceCounter(" Processor "、"%Processor Time "、" _Total "); .NextValue() ) 'で十分だろう。 –

答えて

3

video card's own CPUGPUと呼ばれています。そのまたはvideoに関連するパフォーマンスカウンタの

ルック(Start->Run->PerfMonを使用するか、またはStartメニューの検索ボックスにPerfMonを入力し、グラフ上で右クリックしてAdd Counter...を選択します)。

ビデオカードメーカーがGPUのパフォーマンスカウンタを提供していない場合は、取得することはできません。

+0

パフォーマンスカウンタは、実行中のシステムに関する唯一の情報源ではありません。 –

+0

@BenVoigt:私は彼らがそうであるとは言いませんでした。私はソースとして、他のコードに基づいて提案した。他の人にも気軽に提供してください。 :-) –

+0

あなたの最後の文が何を意味するのかよく分かりません。いずれにしても、RivaTunerには、データにプログラムでアクセスするためのAPI、パフォーマンスカウンタなしでこのデータを取得する他の多くの監視プログラムがあります。 –

関連する問題