Я профилирую скорость, с которой определенная программа Linux читает определенный входной файл, используя различное количество потоков, выполняя это:

time ~/src/myprogram -t $t inputfile 1>/dev/null 2>/dev/null

Кажется, что независимо от того, какое количество потоков я использую, начиная с 12 до 1, время остается одинаковым. Есть ли другой способ проверить это, чтобы убедиться, что на него не влияет скорость отправки данных в /dev/null?

1 ответ1

1

Ядро кэширует ввод-вывод, считываемый с входящих блочных устройств, в свободной оперативной памяти. Если ваш файл не очень большой, вы, вероятно, попали в кэшированные данные в ОЗУ и фактически не вызывали ввода-вывода.

Очень быстрый поиск и чтение ответа на переполнение стека показывает, что это может сделать это:

sync && echo 1 > /proc/sys/vm/drop_caches

поэтому я попытался бы выполнить эту команду перед командой, которая выполняет ввод / вывод.

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