Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performance Counter Category Names? (C#)

Tags:

I'm trying to program in a performance counter into my C# application that launches another process and checks the processor usage of that launched process. As I understand it, the performance counter class requires me to assign a category name , a counter name, and a process name. I can get the process name easily enough, but is there a list of some sort on the internet that has all possible category and counter names I can assign? I tried scouring MSDN for something like this, but I didn't find anything.

Thanks for all the help!

like image 681
Waffles Avatar asked Feb 19 '10 19:02

Waffles


People also ask

What are the different counters in Performance Monitor?

Performance monitor Performance counters are bits of code that monitor, count, or measure events in software, which allow us to see patterns from a high-level view. They are registered with the operating system during installation of the software, allowing anyone with the proper permissions to view them.

What are CPU performance counters?

In computers, hardware performance counters (HPC), or hardware counters are a set of special-purpose registers built into modern microprocessors to store the counts of hardware-related activities within computer systems. Advanced users often rely on those counters to conduct low-level performance analysis or tuning.

What is performance counter in C#?

Performance counters enable us to publish, capture, and analyze the performance data of running code. A performance graph is a two-dimensional plot with one axis indicating time elapsed and the other reporting relevant relative or actual performance statistics.

What are Windows performance counters?

Windows Performance Counters provide a high-level abstraction layer that provides a consistent interface for collecting various kinds of system data such as CPU, memory, and disk usage. System administrators often use performance counters to monitor systems for performance or behavior problems.


2 Answers

I think you want to know what aspects of the process you can monitor. A list of the Process Performance Counters is available here Nevertheless you can use the GetCategories static method to list all categories in the machine or you could be more specific and create the PerformanceCategory for the "Process" category and use the GetCounters to get a list of all counters available. Hope this helps.

like image 186
CriGoT Avatar answered Sep 17 '22 12:09

CriGoT


For those who want to quickly browse and find needed Counter here's a quick Form that displays three list boxes with |Categories|Instances|Counters| and a Counter Value that is updated on a timer. With filters.

enter image description here

using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Windows.Forms;  namespace CountersListPreview {     internal static class CounterPreview     {         [STAThread]         private static void Main()         {             Application.EnableVisualStyles();             Application.SetCompatibleTextRenderingDefault(false);              Form f = new CountersListPreviewForm();             Application.Run(f);         }     }      internal class CountersListPreviewForm : Form     {         public CountersListPreviewForm()         {             InitializeComponent();         }          private PerformanceCounterCategory[] allCats;         private string[] instances;         private PerformanceCounter[] counters;         private PerformanceCounter counter;         private Timer TitleRefreshTimer;          private void Form1_Load(object sender, EventArgs e)         {             allCats = PerformanceCounterCategory.GetCategories();             listBox1.DataSource = allCats;             listBox1.DisplayMember = "CategoryName";              listBox1.SelectedIndexChanged += On_CatChange;             listBox2.SelectedIndexChanged += On_InstChange;             listBox3.SelectedIndexChanged += On_CounterChange;              textBox2.TextChanged += On_CatFilterChanged;             textBox3.TextChanged += On_InstFilterChanged;             textBox4.TextChanged += On_CounterFilterChanged;              TitleRefreshTimer = new Timer();             TitleRefreshTimer.Tick += On_Timer;             TitleRefreshTimer.Interval = 500;             TitleRefreshTimer.Start();         }          private void On_Timer(object sender, EventArgs e)         {             textBox1.Text = counter != null ? counter.NextValue().ToString() : "";         }          // --------------- SELECTION CHANGE ------------------          private void On_CatChange(object sender, EventArgs e)         {             var cat = listBox1.SelectedItem as PerformanceCounterCategory;             listBox2.DataSource = instances = cat.GetInstanceNames();         }          private void On_InstChange(object sender, EventArgs e)         {             var cat = listBox1.SelectedItem as PerformanceCounterCategory;             var inst = listBox2.SelectedItem as string;             listBox3.DataSource = counters = cat.GetCounters(inst);             listBox3.DisplayMember = "CounterName";         }          private void On_CounterChange(object sender, EventArgs e)         {             counter = listBox3.SelectedItem as PerformanceCounter;             On_Timer(null, null);         }          // --------------- FILTERS ------------------          private void On_CatFilterChanged(object sender, EventArgs e)         {             var filter = textBox2.Text;             listBox1.DataSource = !string.IsNullOrEmpty(filter)                  ? allCats.Where(cat => cat.CategoryName.ToLower().Contains(filter.ToLower())).ToArray()                  : allCats;         }          private void On_InstFilterChanged(object sender, EventArgs e)         {             var filter = textBox3.Text;             listBox2.DataSource = !string.IsNullOrEmpty(filter)                  ? instances.Where(inst => inst.ToLower().Contains(filter.ToLower())).ToArray()                  : instances;         }          private void On_CounterFilterChanged(object sender, EventArgs e)         {             var filter = textBox4.Text;             listBox3.DataSource = !string.IsNullOrEmpty(filter)                  ? counters.Where(c => c.CounterName.ToLower().Contains(filter.ToLower())).ToArray()                  : counters;         }          // --------------- FORM AND LAYOUT ------------------          private readonly IContainer components = null;          protected override void Dispose(bool disposing)         {             if (disposing && components != null) components.Dispose();             base.Dispose(disposing);         }          #region Windows Form Designer generated code          private void InitializeComponent()         {             this.listBox1 = new System.Windows.Forms.ListBox();             this.listBox2 = new System.Windows.Forms.ListBox();             this.listBox3 = new System.Windows.Forms.ListBox();             this.textBox1 = new System.Windows.Forms.TextBox();             this.label1 = new System.Windows.Forms.Label();             this.textBox2 = new System.Windows.Forms.TextBox();             this.textBox3 = new System.Windows.Forms.TextBox();             this.textBox4 = new System.Windows.Forms.TextBox();             this.SuspendLayout();             //              // listBox1             //              this.listBox1.FormattingEnabled = true;             this.listBox1.Location = new System.Drawing.Point(12, 38);             this.listBox1.Name = "listBox1";             this.listBox1.Size = new System.Drawing.Size(351, 524);             this.listBox1.TabIndex = 3;             //              // listBox2             //              this.listBox2.FormattingEnabled = true;             this.listBox2.Location = new System.Drawing.Point(369, 38);             this.listBox2.Name = "listBox2";             this.listBox2.Size = new System.Drawing.Size(351, 524);             this.listBox2.TabIndex = 3;             //              // listBox3             //              this.listBox3.FormattingEnabled = true;             this.listBox3.Location = new System.Drawing.Point(726, 38);             this.listBox3.Name = "listBox3";             this.listBox3.Size = new System.Drawing.Size(351, 524);             this.listBox3.TabIndex = 3;             //              // textBox1             //              this.textBox1.Location = new System.Drawing.Point(726, 568);             this.textBox1.Name = "textBox1";             this.textBox1.Size = new System.Drawing.Size(351, 20);             this.textBox1.TabIndex = 4;             //              // label1             //              this.label1.AutoSize = true;             this.label1.Location = new System.Drawing.Point(606, 571);             this.label1.Name = "label1";             this.label1.Size = new System.Drawing.Size(114, 13);             this.label1.TabIndex = 5;             this.label1.Text = "Counter Value (500ms)";             //              // textBox2             //              this.textBox2.Location = new System.Drawing.Point(12, 12);             this.textBox2.Name = "textBox2";             this.textBox2.Size = new System.Drawing.Size(351, 20);             this.textBox2.TabIndex = 4;             //              // textBox3             //              this.textBox3.Location = new System.Drawing.Point(369, 12);             this.textBox3.Name = "textBox3";             this.textBox3.Size = new System.Drawing.Size(351, 20);             this.textBox3.TabIndex = 4;             //              // textBox4             //              this.textBox4.Location = new System.Drawing.Point(726, 12);             this.textBox4.Name = "textBox4";             this.textBox4.Size = new System.Drawing.Size(351, 20);             this.textBox4.TabIndex = 4;             //              // Form1             //              this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;             //this.BackColor = System.Drawing.SystemColors.;             this.ClientSize = new System.Drawing.Size(1090, 597);             this.Controls.Add(this.label1);             this.Controls.Add(this.textBox4);             this.Controls.Add(this.textBox3);             this.Controls.Add(this.textBox2);             this.Controls.Add(this.textBox1);             this.Controls.Add(this.listBox3);             this.Controls.Add(this.listBox2);             this.Controls.Add(this.listBox1);             //this.ForeColor = System.Drawing.SystemColors.ControlLightLight;             this.Name = "Form1";             this.Load += new System.EventHandler(this.Form1_Load);             this.ResumeLayout(false);             this.PerformLayout();         }          #endregion          private ListBox listBox1;         private ListBox listBox2;         private ListBox listBox3;         private TextBox textBox1;         private Label label1;         private TextBox textBox2;         private TextBox textBox3;         private TextBox textBox4;     } } 
like image 37
n1kk Avatar answered Sep 18 '22 12:09

n1kk