Как вы сказали сами, вы можете нажать, Hчтобы показать пользовательские темы.
Просто для справки в будущем (и для удовольствия), давайте посчитаем загрузку процессора!
Немного предыстории:
В современной операционной системе есть Планировщик. Он направлен на то, чтобы все процессы и их потоки получали справедливую долю вычислительного времени. Я не буду вдаваться в подробности планирования (это действительно сложно). Но, в конце концов, есть нечто, называемое очередью запуска . Здесь все инструкции всех процессов выстраиваются в очередь, чтобы дождаться своей очереди.
Любой процесс помещает свои «задачи» в очередь выполнения, и когда процессор готов, он выталкивает их и выполняет их. Например, когда программа переходит в спящий режим, она удаляет себя из очереди выполнения и возвращается к концу строки, как только она снова готова к запуску.
Сортировка в этой очереди имеет отношение к приоритету процессов (также называемому «хорошим значением» - то есть процесс хорош в отношении системных ресурсов).
Длина очереди определяет нагрузку на систему. Например, загрузка 2,5 означает, что для каждой инструкции, с которой ЦПУ может работать в режиме реального времени , имеется 2,5 инструкции .
Кстати, в Linux эта нагрузка рассчитывается с интервалами в 10 мс (по умолчанию).
Теперь перейдем к процентным значениям загрузки процессора:
Представьте, что у вас есть два часа, один называется, t
и он представляет собой реальное время . Он измеряет секунду за каждую секунду. Другие часы мы называем c
. Он запускается только при наличии обработки. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «имеет» один из них.
Загрузка процессора теперь может быть рассчитана для одного процесса:
или для всех процессов:
На многоядерном компьютере это может привести к значению 3,9, конечно, потому что ЦП может рассчитывать четыре секунды вычислений каждую секунду, если используется идеально.
Википедия предоставляет этот пример:
Программное приложение, работающее на 6-процессорной машине UNIX, создает три процесса UNIX для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если ожидание ресурсов не требуется, ожидается, что общее время ЦП будет в шесть раз превышать реальное время.
Вот небольшой фрагмент кода Python, который делает это
>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %
В идеальном мире из этого можно сделать вывод, что загрузка системы составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, планирование неэффективности и т. Д.)
В отличие от нагрузки , эти вычисления всегда будут давать значение от 0 до числа процессоров, то есть от 0 до 1 или от 0 до 100%. В настоящее время нет способа провести различие между машиной, на которой выполняются три задачи, использующей 100% ЦП, и машиной, выполняющей миллион задач, выполняющей едва ли любую работу, выполненную на одной из них, в том числе на 100%. Например, если вы пытаетесь сбалансировать кучу процессов на многих компьютерах, загрузка ЦП практически бесполезна. Загрузка это то, что вы хотите там.
Сейчас на самом деле существует более одного из этих часов времени обработки. Например, есть один для ожидания ввода / вывода. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.
Возможно, это не помогло с оригинальным вопросом, но я надеюсь, что это интересно. :)