Почему «реальное» время намного выше, чем «пользовательское» и «системное» время вместе взятые?

19

Я выполняю и выполняю timeмного команд (т. Е. nslookup) SSHИ собираю общее время, необходимое для выполнения подразумеваемой услуги (т. Е. DNS ). Таким образом, я собираю время userи sysвремя, realсчитая время, когда мой процесс блокируется, что мне не нужно ... Я думаю.

Но у некоторых из моих тестов были результаты как таковые:

real 3m22.033s
user 0m0.009s
sys 0m0.014s

Я выполняю эти тесты на ограниченных ресурсах Linux-боксов, но realвремя все равно значительно велико. Означает ли это, что ящик ОЧЕНЬ занят выполнением разных процессов? Правильно ли еще сложить userи sysузнать, сколько времени заняла служба?

Мухаммед Гелбана
источник

Ответы:

22

Реальное - это общее время, которое потребовалось для завершения процесса (то есть разница между временем запуска и временем остановки):

$ time sleep 3

real    0m3.002s
user    0m0.000s
sys     0m0.000s

В этом листинге пользователь и sys ссылаются на время, проведенное соответственно в пользовательском режиме и режиме ядра. Они не включают время, проведенное в неактивном состоянии в состоянии сна . Процесс переходит в спящий режим, когда он намеренно запрашивает его или когда он ожидает ввода-вывода (доступ к сети / доступ к диску / взаимодействие с пользователем) или ожидает завершения других процессов, из-за нехватки ЦП, когда система находится под очень высокой нагрузкой , и т.д.

Как правило, если вы звоните timeв wget, реальной будет соответствовать времени загрузки принимает, пользователь должен быть незначительным (если wgetне просят выполнить интенсивную обработку данных), SYS должно быть небольшим (какое - то время может быть потрачено , чтобы иметь дело с буферами, двигаясь обратно данных и далее из пространства ядра в пространство пользователя.)

Стефан Хименес
источник
Извините, я добавил wgetк вопросу, на самом деле я не знаю, timeно спасибо за объяснение. То, что это realвключает в себя время блокировки, такое как ожидание сетевого ввода-вывода, заставляет меня подумать, что нужно включить и это время, потому что я фактически тестирую сеть. Спасибо.
Мухаммед Гелбана
Не могли бы вы подтвердить следующее, чтобы протестировать производительность сети и скорость отклика запрашиваемой машины, будь то DNSсервер или проверенный компьютер, достаточно ли только измерения realвремени?
Мухаммед Гелбана
@MuhammadGelbana: Это реальное время - просто секундомер, ничего более. Если вы дадите pingзапустить в течение 3 минут 22, он вернется через 3 минуты 22. Это просто бесполезно в этом случае (и на самом деле это бесполезно в качестве ориентира в большинстве случаев, результат зависит от внешних факторов).
Стефан Гименес
Благодарю. Но знаете ли вы, почему это не время ожидания? Я прочитал, что время ожидания по умолчанию nslookupсоставляет 5 секунд!
Мухаммед Гелбана