1

Я прочитал этот вопрос о «реальных», «пользовательских» и «sys» описаниях и подумал, что немного поиграю. Может кто-нибудь объяснить, почему

[root@lux ~]# time dd if=/dev/zero of=del.large bs=10K count=32768
32768+0 records in
32768+0 records out
335544320 bytes (336 MB) copied, 0.623293 seconds, 538 MB/s

real    0m0.717s
user    0m0.007s
sys     0m0.709s
[root@lux ~]# time dd if=/dev/zero of=del.large bs=100K count=32768
19838+0 records in
19838+0 records out
2031411200 bytes (2.0 GB) copied, 47.31 seconds, 42.9 MB/s


real    0m47.401s
user    0m0.009s
sys     0m3.395s

Понятно, что real = user + sys в первом испытании. Почему не так же во втором тесте?

2 ответа2

3

Учитывая экстремальное падение заявленной скорости передачи данных (с 538 МБ / с до 42,9 МБ / с), я подозреваю, что записанный в вашем первом тесте 336M полностью помещается в кэш записи диска, поэтому процесс просто передает все данные в диск, который кешировал его и немедленно сообщал об успехе.

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

0

реальное время не обязательно равно пользовательскому времени + системному времени в многопроцессорной системе. Пользовательское время + системное время - это время, затрачиваемое ЦП, в то время как реальное время - это реальное количество используемого времени.

Изменить: по-видимому, его спрашивали раньше: https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .