Что конкретно представляет собой часы настенных часов, пользовательский процессор и системный процессор в 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