Когда я запускаю time find ~
в первый раз, что означает первый раз, когда я запускаю find
в сеансе, это занимает больше времени, чем во второй раз. Почему это так?
Первый запуск:
real 0m12.410s
user 0m0.424s
sys 0m1.287s
Второй запуск:
real 0m0.988s
user 0m0.214s
sys 0m0.405s
Ссылка, предоставленная Rinzwind, названным, Почему [находка] работающий невероятный быстр, если выполнено дважды? и Что “кэшируется” в главной команде? охватите ту же проблему.
По существу, если свободная RAM доступна, ядро может использовать часть ее к информации о кэше. Память, используемая таким образом, может быть сделана доступной для приложений по требованию.
Linux поел, моя RAM объясняет условия такой как доступные, буферные, свободные, и используемые. Это также обеспечивает следующую команду для очистки "большей части дискового кэша":
echo 3 | sudo tee /proc/sys/vm/drop_caches
Для подтверждения, что находка более быстра во второй раз вокруг я работал time find ~
впервые:
real 0m10.765s
user 0m0.395s
sys 0m1.169s
И во второй раз для наблюдения благоприятного воздействия кэширования памяти:
real 0m1.119s
user 0m0.196s
sys 0m0.476s
Затем я очистил кэш с echo 3 | sudo tee /proc/sys/vm/drop_caches
и работал time find ~
снова. Конечно же, время было высоко снова:
real 0m19.198s
user 0m0.457s
sys 0m1.425s
Но, из-за нового кэширования, выполнения находки впоследствии и как и следовало ожидать, показал улучшенное время:
real 0m1.100s
user 0m0.199s
sys 0m0.484s
При чтении о кэше я столкнулся, Кэшировать/предварительно загружать файлы на Linux в RAM и нескольких ответах, предложенных vmtouch - Виртуальная память Toucher: это описано как "Портативный кэш файловой системы диагностика и управление" и находится в repos для Бионического и более позднего.