Я пытаюсь рассчитать загрузку ЦП на ядро в Linux с помощью кода C #. Когда я выполняю cat /proc/stat | grep cpu
, мой вывод выглядит точно так же, как строка cpu_usage
. Затем я создаю список для каждой строки и хочу рассчитать загрузку ЦП по (1 - (cpu_usage_row_split[4] / sum(cpu_usage_row_split[1:]))) * 100
Так что в целом я хочу удалить четвертый элемент в списке (использование ЦП в режиме ожидания) до суммы всех элементов (user, nice , system, idle, iowait, irq, softirq), исключая первое (номер ЦП) для получения загрузки ЦП отдельных ядер ЦП. Я знаю, что могу просто преобразовать элементы в целое, а затем суммировать каждый элемент, но я хочу использовать нечто похожее на функцию Python sum(lst[1:])
.
using System;
using System.Linq;
public class Program
{
public static void Main()
{
string cpu_usage = @"cpu 16272 1158 46722 553911117 31493 0 158 0 0 0
cpu0 2099 184 5874 34608555 408 0 56 0 0 0
cpu1 586 0 1544 34624437 314 0 12 0 0 0
cpu2 1162 0 3184 34618796 1854 0 8 0 0 0
cpu3 609 4 1594 34624014 411 0 3 0 0 0";
string[] cpu_usage_arr = cpu_usage.Split('\n');
for (int i = 0; i < cpu_usage_arr.Length; i++)
{
string cpu_usage_row = cpu_usage_arr[i];
string[] cpu_usage_row_split = cpu_usage_row.Split(' ');
cpu_usage_row_split = cpu_usage_row_split.Where(x => !string.IsNullOrEmpty(x)).ToArray();
}
}
}