2

Я синхронизирую некоторый код, и я хотел бы сказать, сколько времени занимает чтение данных с диска. Я не считаю , что результат , который time дает мне. Например, у меня есть файл 1,3 ГБ, и если я запускаю wc я получаю

time wc largefile.file 
  50000000  150000000 1316665179 largefile.file

real    0m26.835s
user    0m18.363s
sys     0m0.495s

Это не могло занять <0,5 секунды, чтобы прочитать файл с моего старого жесткого диска.

Есть ли надежный способ узнать, сколько времени было связано с вводом / выводом?


Более подробная информация о том, почему я не вижу, как интерпретировать time . Если я сделаю

time cat largefile.file > /dev/null

real    0m24.230s
user    0m0.060s
sys     0m1.473s

тогда хочется сказать, что на ввод-вывод уходит около 22,5 секунд. Но цифра wc сверху подразумевает, что это 8 секунд. Эти две цифры не соответствуют.

1 ответ1

2

sys означает время процессора в ядре, но вы хотите время ожидания io.

Googling нашел другой ответ об обмене стека, указав на « iowait на процесс из /proc / $ pid / stat ». (И, возможно, нужно запустить программист под отладчиком и установить точку останова на exit() / _exit() , чтобы вы могли прочитать iowait до того, как процесс уйдет?).

Часто я просто вычисляю это, вычитая время процессора (user+sys) из реального времени. Это предполагает, что процесс не ждет вещей, которые вы не считаете "IO".

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