[unix] 캐싱 찾기 / ls

처음 find또는 ls디렉토리에서 실행하는 것처럼 작동하는 데 시간이 걸립니다. 그러나 그 이후에는 디렉토리의 내용 목록이 어딘가에 캐시되거나 인덱싱되는 것처럼 빠릅니다.

컴퓨터를 다시 부팅해도이 캐시를 유지하는 방법이 있습니까?



답변

vmtouch 를 사용 하여 파일을 페이지 캐시 (디스크 캐시)에 추가 할 수 있습니다 .

넣어 nohup vmtouch -dl <files or directories> &당신의 /etc/rc.local부팅 페이지 캐시에 추가 할 파일 및 잠금 파일. 페이지 캐시에 파일을 추가하려고하지만 파일을 메모리에 고정하지 않으려면 -t플래그 대신 플래그를 사용하십시오 -ld.

페이지 캐시에 대한 자세한 내용은 여기 , 여기wikipedia를 참조하십시오 .


답변

“재부팅 전반에 걸쳐 보존”, 의심합니다. 그러나 부팅 할 때 캐시를 간단하게 재 구축 할 수 있습니다. 이는 거의 동일한 지연 시간을 뺀 것과 거의 같습니다.

파일을 작성 /etc/cron.d/rebuild-fs-cache하고 다음을 넣습니다.

@reboot root /usr/bin/nice -n 19 /usr/bin/ionice -c 3 -t /usr/bin/find / >/dev/null 2>&1

이 사용 nice하고 ionice(기본적으로 설치, 확실히 패키지 관리자를 통해 사용할 수 있습니다되어야한다 데비안 풋 그들 coreutilsutil-linux각각은,)의 우선 순위를 낮추는 find것이 다른 어떤 방해해서는 안 수단 가능한 가장 좋은 수준에 과정을 시스템에서 실행되지만 완료하는 데 약간 더 오래 걸립니다. 커널 find자체가 stat()파일 시스템 데이터를 디스크에서 메모리로로드하도록 강제합니다.

캐시가 구축되면, OS가 다른 것을 위해 메모리를 필요로하기 때문에 제거되지 않는 한 캐시를 유지해야합니다. 나는 이것을 잠시 동안 사용했으며 큰 디렉토리에서도 디렉토리 목록 은 위의 cron 작업이없는 것보다 훨씬 빠르지 만 정확한 숫자를 인용 할 수는 없습니다.


답변