परफॉरमेंस काउंटर्स एप्लिकेशन, सिस्टम, या हार्डवेयर के प्रदर्शन मेट्रिक्स मापने के लिए उपयोग होते हैं। C# में System.Diagnostics.PerformanceCounter क्लास इनके साथ इंटरैक्ट करती है।
मुख्य प्रॉपर्टीज़
CategoryName: काउंटर श्रेणी (जैसे "Processor", "Memory", ".NET CLR Memory")।CounterName: विशिष्ट काउंटर (जैसे "% Processor Time", "Available MBytes")।InstanceName: विशिष्ट इंस्टेंस (जैसे "_Total", "sqlservr")।MachineName: लक्ष्य मशीन (डिफ़ॉल्ट लोकल)।ReadOnly: केवल पढ़ने के लिए सेट करें।
श्रेणियाँ प्राप्त करना
var categories = PerformanceCounterCategory.GetCategories();
"Processor" श्रेणी प्राप्त करना
var processorCategory = PerformanceCounterCategory.GetCategories()
.FirstOrDefault(c => c.CategoryName == "Processor");
काउंटर पढ़ना
using (var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true))
{
float cpuUsage = cpuCounter.NextValue(); // पहला कॉल 0 दे सकता है
System.Threading.Thread.Sleep(1000);
cpuUsage = cpuCounter.NextValue(); // वास्तविक मान
Console.WriteLine($"CPU Usage: {cpuUsage}%");
}
कस्टम काउंटर बनाना (एडमिन अधिकार चाहिए)
if (!PerformanceCounterCategory.Exists("MyApp"))
{
CounterCreationDataCollection counters = new CounterCreationDataCollection();
counters.Add(new CounterCreationData("RequestsPerSec", "Requests per second", PerformanceCounterType.RateOfCountsPerSecond32));
PerformanceCounterCategory.Create("MyApp", "My Application Counters", PerformanceCounterCategoryType.SingleInstance, counters);
}
नोट
- विंडोज़ पर ही पूरी तरह कार्य करता है।
- .NET Core / .NET 5+ पर क्रॉस-प्लेटफॉर्म के लिए
System.Diagnostics.Metrics(OpenTelemetry) उपयोग करें।