Я могу предположить, основываясь на названиях, но что конкретно такое время настенных часов, время пользовательского процессора и системное время процессора в UNIX?
Является ли время пользовательского процессора количеством времени, потраченным на выполнение кода пользователя, а время ядром-процессор - количеством времени, затраченным в ядре из-за необходимости выполнения привилегированных операций (например, ввода-вывода на диск)?
В какой единице времени это измерение.
И действительно ли время настенных часов - это количество секунд, которое процесс потратил на процессор, или название просто вводит в заблуждение?
unix
operating-system
Джон Хамфрис - w00te
источник
источник
Ответы:
Время настенных часов - это время, которое часы на стене (или секундомер в руке) будут измерять как прошедшее между началом процесса и «сейчас».
Время user-cpu и system-cpu в значительной степени, как вы сказали, - количество времени, потраченное на пользовательский код, и количество времени, потраченное на код ядра.
Единицы измерения - секунды (и подсекунды, которые могут быть микросекундами или наносекундами).
Время настенных часов - это не количество секунд, которое процесс потратил на процессор; это затраченное время, включая время, потраченное на ожидание включения ЦП (пока другие процессы запускаются).
источник
CPUtime = #clock_cycles / clock_rate
не может быть таким же, как вычисление прошедшего времени. Вы знаете, могу ли я узнать прошедшее время из процессорного времени?read()
илиgetpid()
), ядро выполняет код от имени вашей программы. Ядро также выполняет упреждающую многозадачность, чтобы другие программы могли запускаться, и выполняет некоторые общие служебные действия, чтобы система работала бесперебойно. Этот код выполняется в «коде ядра» (также в «режиме ядра»). Это отличается от написанного вами кода и пользовательских библиотек (включая системную библиотеку C), которые вы запускаете.Время на настенных часах: время, прошедшее по внутренним часам компьютера, должно соответствовать времени во внешнем мире. Это не имеет ничего общего с загрузкой процессора; это дано для справки.
Пользовательское время процессора и системное время: именно то, что вы думаете. Системные вызовы, которые включают вызовы ввода-вывода, такие как
read
,write
и т.д., выполняются путем перехода в код ядра и его выполнения.Если время настенных часов <процессорного времени, значит, вы выполняете программу параллельно. Если время настенных часов> процессорного времени, вы ждете диска, сети или других устройств.
Все измеряются в секундах согласно СИ .
источник
Время на настенных часах - это именно то, что написано, прошедшее время, измеренное часами на стене (или наручными часами)
User cpu time - это время, проведенное в "пользовательской зоне", то есть время, потраченное на неядерные процессы.
Системное время процессора - это время, затраченное на ядро, обычно время, затраченное на обслуживание системных вызовов.
источник
настоящие или настенные часы
реальный 7м2.444с
В системе с 24-ядерным процессором эта команда / процесс заняла 7+ минут. Это за счет использования максимально возможного параллелизма со всеми заданными ядрами.
пользователь
пользователь 76m14.607s
Команда cmd / process использовала столько времени процессора. Другими словами, на машине с одноядерным процессором реальный и пользовательский будут примерно равны, поэтому выполнение одной и той же команды займет ~ 76 минут.
sys
sys 2m29.432s
Это время, необходимое ядру для выполнения всех операций базового / системного уровня для запуска этого cmd, включая переключение контекста, выделение ресурсов и т. Д.
источник
(user + sys) / real
представить это.