Скорость чтения файла профилирования через /dev/null?
Я профилирую скорость, с которой определенная программа Linux читает определенный входной файл, используя различное количество потоков, выполняя это:
time ~/src/myprogram -t $t inputfile 1>/dev/null 2>/dev/null
Кажется, что независимо от того, какое количество потоков я использую, начиная с 12 до 1, время остается одинаковым. Есть ли другой способ проверить это, чтобы убедиться, что на него не влияет скорость отправки данных /dev/null
?
1 ответ
Ядро кэширует ввод-вывод, считываемый с входящих блочных устройств, в свободной оперативной памяти. Если ваш файл не очень большой, вы, вероятно, попали в кэшированные данные в ОЗУ и фактически не вызывали ввода-вывода.
Очень быстрый поиск и чтение ответа на переполнение стека показывает, что это может сделать это:
sync && echo 1 > /proc/sys/vm/drop_caches
поэтому я попытался бы выполнить эту команду перед командой, которая выполняет ввод / вывод.