скорость чтения файла профилирования через / dev / null?

554
719016

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

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

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

0
Я бы посмотрел на вашу / src / myprogram, а не на bash, не делая то, что вы думаете, он делает. / dev / null - это устройство ядра, ввод-вывод для него настолько быстр, насколько ввод-вывод может попасть в вашу систему. Пожалуйста, оставьте свой код, если вам нужна помощь. jim mcnamara 11 лет назад 2
Потоки могут сделать код быстрее, только если он может распределять связанные с процессором операции по нескольким ядрам. Если ваш код читает файл с диска, как потоки должны сделать его быстрее? Mike Dunlavey 11 лет назад 2

1 ответ на вопрос

1
LawrenceC

The kernel caches I/O read from incoming block devices in free RAM. Unless your file is very large you are probably hitting the cached data in RAM and not actually causing any I/O.

A very quick search and reading this Stack Overflow answer reveals that this might do it:

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

so I would try issuing those command before the command that performs the I/O.

Похожие вопросы