Подтвердить что ты не робот

Как измерить скорость чтения файла без кеширования?

Моя программа java тратит больше времени на чтение некоторых файлов, и я хочу ее оптимизировать, например, используя concurrency, prefetching, файлы с отображением памяти или что-то еще.

Оптимизация без бенчмаркинга не имеет смысла, поэтому я ориентируюсь. Однако во время теста все содержимое файла кэшируется в ОЗУ, в отличие от реального запуска. Таким образом, времена выполнения эталона намного меньше и, скорее всего, не связаны с реальностью.

Мне нужно как-то сказать операционной системе (Linux) не кэшировать содержимое файла, а лучше стереть кеш до запуска каждого теста. Или, возможно, потребляйте большую часть доступной оперативной памяти (32 ГБ), так что в нее входит только небольшая часть содержимого файла. Как это сделать?

Я использую caliper для бенчмаркинга, но в этом случае я не думаю, что это необходимо (это отнюдь не микрообъект), и я не уверен, что это хорошая идея.

4b9b3361

Ответ 1

Очистить кеш файлов Linux

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

Создайте большой файл, который использует всю оперативную память.

dd if=/dev/zero of=dummyfile bs=1024 count=LARGE_NUMBER

(не забудьте удалить dummyfile, когда закончите).

Ответ 2

Вы можете создать очень большой файл, а затем удалить его. Это очистит кеш диска.

Еще один способ проверить производительность - прочитать файл (ы), который больше вашей основной памяти.

В любом случае, то, что вы тестируете, - это производительность вашего оборудования. Чтобы улучшить это, вам необходимо улучшить свое оборудование, в программном обеспечении вы можете так много сделать. например несколько потоков не заставят ваши диски вращаться быстрее.;)


Windows NT http://research.microsoft.com/pubs/68479/seqio.doc

При последовательном сканировании NT делает запросы на выборку 64 КБ

Из Linux http://www.ece.eng.wayne.edu/~sjiang/Tsinghua-2010/linux-readahead.pdf

Последовательная предварительная выборка, также известная как readahead в Linux, является широко распространенной техникой для преодоления огромного разрыва между характеристиками устройств хранения и их неэффективными способами использования приложениями