internal async Task <double> AverageCpuUsage() { try { string coresPercent = System.String.Empty; double countCorePercent = 0; double averageUsage = 0; double core = 0; CpuCores = System.Environment.ProcessorCount; int coresCpu = CpuCores - 1; while (coresCpu > 0) { using (RandomAccessFile scalingCurFreq = new RandomAccessFile($"/sys/devices/system/cpu/cpu{coresCpu}/cpufreq/scaling_cur_freq", "r")) { using (RandomAccessFile cpuInfoMaxFreq = new RandomAccessFile($"/sys/devices/system/cpu/cpu{coresCpu}/cpufreq/cpuinfo_max_freq", "r")) { string curfreg = await scalingCurFreq.ReadLineAsync(); string maxfreg = await cpuInfoMaxFreq.ReadLineAsync(); double currentFreq = double.Parse(curfreg) / 1000; double maxFreq = double.Parse(maxfreg) / 1000; core = currentFreq * 100 / maxFreq; cpuInfoMaxFreq.Close(); } scalingCurFreq.Close(); } countCorePercent += core; coresPercent += $"core number {coresCpu}: {core}%\n"; coresCpu--; } averageUsage = countCorePercent / 100 * System.Environment.ProcessorCount; return(averageUsage); } catch (System.Exception ex) { #region Logging LogRuntimeAttribute.InLogFiles(typeof(PartLoadInfo), ex); #endregion return(0); } finally { } }