На странице Википедии для Время процессора, это говорит
Время процессора измеряется в тактах или секундах. Часто бывает полезно измерить время ЦП в процентах от мощности ЦП, что называется использованием ЦП.
Я не понимаю, как можно заменить продолжительность на процент. Когда я смотрю на top
, не %CPU
Скажи мне, что MATLAB
использует 2.17 моих ядер?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18118 jasl 20 0 9248400 261528 78676 S 217.2 0.1 8:14.75 MATLAB
Вопрос
Чтобы лучше понять, что такое загрузка ЦП, как мне самому рассчитать использование ЦП?
Процессорное время выделяется в дискретный временные отрезки (тики). В течение определенного количества отрезков времени ЦП занят, в других случаях - нет (что представлено незанятым процессом). На картинке ниже процессор занят в течение 6 из 10 частей ЦП. 6/10 = 0,60 = 60% занятого времени (и, следовательно, будет 40% простоя).
А процент определяется как «число или скорость, которая выражается как определенное количество частей чего-либо, разделенных на 100 частей». Таким образом, в этом случае эти части представляют собой дискретные отрезки времени, а временные отрезки «что-то занято» и отрезки времени простоя - соотношение отрезков времени «занято» к отрезкам времени простоя.
Поскольку процессоры работают в ГГц (миллиарды циклов в секунду). Операционная система разделяет это время на более мелкие единицы, называемые тиками. На самом деле это не 1/10 секунды. Ставка тика в окнах равна 10 миллионов тиков в секунду а в Linux это sysconf(_SC_CLK_TCK)
(обычно 100 тиков в секунду).
В чем-то вроде top
, загруженные циклы ЦП затем разбиваются на такие процентные доли, как время пользователя и системное время. В top
в Linux и perfmon в Windows вы часто получаете отображение, превышающее 100%, то есть потому, что общая сумма составляет 100% * the_number_of_cpu_cores.
В операционной системе это планировщик задание для распределения этих драгоценных фрагментов по процессам, поэтому планировщик сообщает об этом.
Процессорное время - это время, в течение которого процесс использует центральный процессор; его преобразование в процентное соотношение выполняется делением на количество прошедшего реального времени.
Итак, если у меня есть процесс, который использует 1 секунду процессорного времени в течение 2 секунд, он использует 50% процессора.
В случае вашего процесса MATLAB 217% указывает, что он использовал 2,17 секунды процессорного времени в секунду в течение последнего интервала выборки - фактически, монополизируя 2 ядра ЦП и забирая часть трети.