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 { }
        }