From 3b05d4707234e3eb8896db64528bb2ed25a62ace Mon Sep 17 00:00:00 2001 From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch> Date: Sun, 11 Mar 2018 14:36:35 +0100 Subject: [PATCH] Improve code readability and measure WMI query execution time. --- ATxCommon/SystemChecks.cs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/ATxCommon/SystemChecks.cs b/ATxCommon/SystemChecks.cs index bcf9349..591c83d 100644 --- a/ATxCommon/SystemChecks.cs +++ b/ATxCommon/SystemChecks.cs @@ -40,34 +40,39 @@ namespace ATxCommon // TODO: fix bug #36 try { Log.Trace("Querying WMI for CPU load..."); - var searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor"); + var watch = Stopwatch.StartNew(); + var queryString = "SELECT Name, PercentProcessorTime " + + "FROM Win32_PerfFormattedData_PerfOS_Processor"; var opts = new EnumerationOptions { Timeout = new TimeSpan(0, 0, 10), ReturnImmediately = false, }; - searcher.Options = opts; + var searcher = new ManagementObjectSearcher("", queryString, opts); Int32 usageInt32 = -1; - /* + var managementObjects = searcher.Get(); - Log.Trace("WMI query returned {0} objects.", managementObjects.Count); + if (managementObjects.Count == 0) { + Log.Error("No objects returned from WMI!"); + watch.Stop(); + Log.Debug("WMI query took {0} ms.", watch.ElapsedMilliseconds); + return -1; + } + Log.Debug("WMI query returned {0} objects.", managementObjects.Count); foreach (var mo in managementObjects) { var obj = (ManagementObject)mo; var usage = obj["PercentProcessorTime"]; var name = obj["Name"]; usageInt32 = Convert.ToInt32(usage); - Log.Trace("CPU usage {1}: {0}", usageInt32, name); - - if (name.ToString().Equals("_Total")) { - usageInt32 = Convert.ToInt32(usage); - Log.Trace("CPU usage: {0}", usageInt32); - } - + Log.Debug("CPU usage {1}: {0}", usageInt32, name); } + watch.Stop(); + Log.Debug("WMI query took {0} ms.", watch.ElapsedMilliseconds); return usageInt32; - */ + + /* var cpuTimes = searcher.Get() .Cast<ManagementObject>() .Select(mo => new { @@ -87,7 +92,7 @@ namespace ATxCommon usageInt32 = Convert.ToInt32(cpuUsage); Log.Trace("CPU usage: {0}", usageInt32); return usageInt32; - // */ + */ } catch (Exception ex) { Log.Trace("Error in GetCpuUsage: {0}", ex.Message); -- GitLab