Кажется, что при первом запуске find
или ls
в каталоге требуется время для работы. Но каждый раз после этого это происходит быстро, как будто список содержимого каталога был где-то кэширован или проиндексирован.
Есть ли способ сохранить этот кеш при перезагрузке компьютера?
Ответы:
Вы можете использовать vmtouch для добавления файлов в кеш страниц (кеш дисков).
Поместите
nohup vmtouch -dl <files or directories> &
в свой/etc/rc.local
файл, чтобы добавить и заблокировать файлы в кеш страницы при загрузке. Если вы хотите добавить файлы в кэш своей страницы, но не хотите блокировать их в памяти, используйте-t
флаг вместо-ld
флагов.Для получения дополнительной информации о кеше страниц, посмотрите здесь , здесь и в Википедии .
источник
build-essential
пакет. Скачатьvmtouch.c
. Запуститеgcc -O2 -o vmtouch vmtouch.c
или,make vmtouch
и вы получите двоичный файл,vmtouch
который вы можете скопировать, например,/usr/local/bin
или позвонить по./vmotouch
.vmtouch
медленной команды при загрузке не работает? Я надеялся сохранить кеш через ботинки, а не (дорого) восстанавливать его каждый раз.«Сохраняй через перезагрузки», сомневаюсь я. Но вы можете тривиально перестроить кеш при загрузке, который выполняет почти то же самое, за исключением небольшой задержки.
Создайте файл
/etc/cron.d/rebuild-fs-cache
и поместите в него следующее:Он использует
nice
иionice
(который должен быть установлен по умолчанию и определенно доступен через менеджер пакетов; Debian помещает их вcoreutils
иutil-linux
, соответственно), чтобы понизить приоритетfind
процесса до наилучших возможных уровней, что означает, что он не должен мешать чему-либо другому. работает в вашей системе, но это займет немного больше времени.find
Сам пройдёт иstat()
всё, что заставит ядро загрузить данные файловой системы с диска в память.После того, как кеш построен, пока он не очищен, потому что ОС нужна память для чего-то другого, его следует поддерживать. Я использовал это некоторое время, и списки каталогов даже в больших каталогах значительно быстрее, чем без вышеуказанной работы cron, хотя я не могу привести точные цифры.
источник
locate
, который поставляется сupdatedb
для обновления базы данных местонахождение: en.wikipedia.org/wiki/Locate_(Unix)locate
, ноls
много использую. И изредкаfind
. (Кроме того, find и ls - это конкретные команды, которые запрашивает OP.) Смысл использованияfind
здесь в том, что он выполняет итерации по всему хранилищу, вызывая stat (), поэтому ядро должно загрузить метаданные в память. Как только он там, он так же хорош, как если бы он был сохранен при перезагрузке.