Что конкретно представляет собой часы настенных часов, пользовательский процессор и системный процессор в UNIX?

Я могу угадать, основываясь на именах, но что конкретно представляет собой время настенного времени, времени пользовательского процессора и системного процессора в UNIX?

Является ли пользовательский процессор временем времени, затрачиваемым на выполнение пользовательского кода, а время ядра - процессором - время, затраченное на ядро ​​из-за необходимости привилегированных операций (например, IO на диск)?

В какой единице времени это измерение.

И действительно ли настенное время действительно количество секунд, затраченных на процессор, или это имя просто вводит в заблуждение?

Ответ 1

Время настенных часов - это время, когда часы на стене (или секундомер в руке) будут измеряться как прошедшие между началом процесса и "сейчас".

Время пользовательского процессора и время системного процессора в значительной степени, как вы сказали, - количество времени, затраченного на код пользователя, и количество времени, затраченного на код ядра.

Единицы - секунды (и субсекунды, которые могут быть микросекундами или наносекундами).

Время настенных часов - это не количество секунд, затраченных на процессор; это истекшее время, включая время, потраченное на ожидание его включения в CPU (в то время как другие процессы запускаются).

Ответ 2

Время настенного времени: время, прошедшее в соответствии с внутренними часами компьютера, которое должно соответствовать времени во внешнем мире. Это не имеет никакого отношения к использованию ЦП; это дано для справки.

Пользовательское время процессора и системное время: именно то, что вы думаете. Системные вызовы, которые включают вызовы ввода-вывода, такие как read, write и т.д., Выполняются путем перехода на код ядра и выполнения этого.

Если время настенного времени < CPU, тогда вы выполняете параллельную программу. Если время настенных часов > время процессора, вы ждете диск, сеть или другие устройства.

Все измеряются в секундах, в SI.

Ответ 3

Время настенных часов - это именно то, что он говорит, время, прошедшее с учетом часов на вашей стене (или наручных часах)

Время процессора пользователя - это время, затраченное на "пользовательскую землю", то есть время, затрачиваемое на неядерные процессы

Время в системном процессоре - это время, затраченное на ядро, обычно это время, затраченное на обслуживание системных вызовов.

Ответ 4

time [WHAT-EVER-COMMAND]

real    7m2.444s
user    76m14.607s
sys 2m29.432s

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                24

реальные или настенные часы

реальный 7m2.444s

В системе с 24-ядерным процессором для этого процесса cmd/process потребовалось 7+ mins. Это, используя наиболее возможный параллелизм со всеми заданными ядрами.

пользователь

пользователь 76m14.607s

Процесс cmd/использовал это много времени процессора. Другими словами, на машине с одноядерным процессором реальный и пользователь будет почти равным, поэтому одна и та же команда займет ~ 76 минут.

системный

sys 2m29.432s

Это время, затраченное ядром для выполнения всех операций базового/системного уровня для запуска этого cmd, включая переключение контекста, распределение ресурсов и т.д.

Примечание. В примере предполагается, что ваша команда использует параллелизм/потоки.

Подробная страница руководства: https://linux.die.net/man/1/time