Wydaje się, że przy pierwszym uruchomieniu find
lub ls
w katalogu praca zajmuje trochę czasu. Ale za każdym razem jest szybki, jakby lista zawartości katalogu została gdzieś zbuforowana lub zindeksowana.
Czy istnieje sposób na zachowanie tej pamięci podręcznej podczas ponownego uruchamiania komputera?
Odpowiedzi:
Możesz użyć vmtouch, aby dodać pliki do pamięci podręcznej strony (pamięci podręcznej dysku).
Umieścić
nohup vmtouch -dl <files or directories> &
w/etc/rc.local
pliku, aby dodać i plików lock na swoją stronę pamięci podręcznej na bagażniku. Jeśli chcesz dodać pliki do pamięci podręcznej strony, ale nie chcesz blokować ich w pamięci, użyj-t
flagi zamiast-ld
flag.Aby uzyskać więcej informacji o pamięci podręcznej strony, spójrz tutaj , tutaj i na wikipedii .
źródło
build-essential
pakiet. Pobierzvmtouch.c
. Uruchomgcc -O2 -o vmtouch vmtouch.c
lubmake vmtouch
otrzymasz plik binarny,vmtouch
który możesz następnie skopiować na przykład/usr/local/bin
lub zadzwonić./vmotouch
.vmtouch
polecenia uruchamiania przy spowolnieniu całego działania? Moją nadzieją było zachowanie bufora na obuwie zamiast (drogiego) regenerowania go za każdym razem.„Zachowaj przez ponowne uruchomienie”, wątpię. Ale możesz w trywialny sposób odbudować pamięć podręczną podczas uruchamiania, co osiąga prawie to samo, z niewielkim opóźnieniem.
Utwórz plik
/etc/cron.d/rebuild-fs-cache
i umieść w nim następujące elementy:Wykorzystuje
nice
iionice
(które powinny być instalowane domyślnie, a na pewno dostępna za pośrednictwem menedżera pakietów; umieszcza je w Debianiecoreutils
iutil-linux
, odpowiednio), aby obniżyć priorytetfind
procesu najpiękniejszych możliwych poziomach, co oznacza, że nie powinny kolidować z niczym innym działa w systemie, ale jego ukończenie potrwa nieco dłużej.find
sam przejdzie istat()
wszystko, co zmusi jądro do załadowania danych systemu plików z dysku do pamięci.Po zbudowaniu pamięci podręcznej, o ile nie zostanie wyczyszczona, ponieważ system operacyjny potrzebuje pamięci na coś innego, należy ją zachować. Używam tego od dłuższego czasu, a wykazy katalogów nawet w dużych katalogach są znacznie szybsze niż bez powyższego zadania cron, chociaż nie mogę podać dokładnych liczb.
źródło
locate
, który zawieraupdatedb
aktualizację zlokalizowanej bazy danych: en.wikipedia.org/wiki/Locate_(Unix)locate
, ale używamls
dużo. I od czasu do czasufind
. (Również find i ls są konkretnymi poleceniami, o które prosi OP). Skorzystanie zfind
tego polega na tym, że iteruje wszystko na pamięci wywołując stat (), więc jądro musi załadować metadane do pamięci. Gdy już tam jest, jest tak dobry, jakby był przechowywany podczas ponownego uruchamiania.