Что такое «системное время» при использовании «времени» в командной строке

10

Я использую timeвремя Perlсценария на стандартном терминале в Ubuntu 14.04.

Я прочитал, что real timeэто время секундомера; время, которое я, как пользователь, трачу на просмотр программы, запущенной с момента ее запуска, до ее завершения. Но я не понимаю, что userили sysвремена. Страница timeруководства на сайте расплывчата, если не сказать больше.

Хотя несколько ясно, что realвремя разделено между ними userи sysне ясно, что они представляют.

В моем сценарии я сравниваю [1] C ++ и Perl друг с другом, чтобы увидеть разницу, и я хотел бы знать, какие данные я на самом деле получаю. Пример вывода:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

Может кто-нибудь уточнить, о чем говорит пользовательский формат времени по умолчанию? Я новичок в Linux, поэтому, пожалуйста, не принимайте слишком много.

[1] Интересно, что хотя C ++ намного быстрее, чем Perl в моем тесте по realвремени, sysвремя не сильно отличается, так как C ++ фактически использует больше sysвремени, чем Perl. Вот почему я хочу знать, что они имеют в виду

Alrekr
источник

Ответы:

15

Из википедии :

  • Время пользователя против системного времени

Поначалу термин «время процессора пользователя» может вводить в заблуждение. Чтобы быть понятным, общее время ЦП представляет собой комбинацию количества времени, затраченного ЦП на выполнение какого-либо действия для программы, и количества времени, затраченного ЦП на выполнение системных вызовов для ядра от имени программы. Когда программа проходит по массиву, она накапливает пользовательское процессорное время. И наоборот, когда программа выполняет системный вызов, такой как exec или fork, она накапливает системное процессорное время.

  • Реальное время против ЦП

Термин «реальное время» в этом контексте относится к прошедшему времени «настенных часов», как при использовании секундомера. Общее время ЦП (пользовательское время + системное время) может быть больше или меньше этого значения. Поскольку программа может тратить некоторое время на ожидание, а не на выполнение вообще (в пользовательском или системном режиме), реальное время может быть больше, чем общее время ЦП. Поскольку программа может создавать дочерние процессы, у которых время ЦП (как пользовательское, так и системное) добавляется к значениям, сообщаемым командой time, общее время ЦП может быть больше, чем в реальном времени.

Константинос
источник
1
Я не понимаю, как мне удалось не найти ту статью в Википедии. Спасибо.
Alrekr