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