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

Я синхронизирую некоторый код, и я хотел бы сказать, сколько времени уходит на чтение данных с диска. Я не верю результату, который 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 ответ

Решение

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

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

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

Другие вопросы по тегам