처음 find
또는 ls
디렉토리에서 실행하는 것처럼 작동하는 데 시간이 걸립니다. 그러나 그 이후에는 디렉토리의 내용 목록이 어딘가에 캐시되거나 인덱싱되는 것처럼 빠릅니다.
컴퓨터를 다시 부팅해도이 캐시를 유지하는 방법이 있습니까?
처음 find
또는 ls
디렉토리에서 실행하는 것처럼 작동하는 데 시간이 걸립니다. 그러나 그 이후에는 디렉토리의 내용 목록이 어딘가에 캐시되거나 인덱싱되는 것처럼 빠릅니다.
컴퓨터를 다시 부팅해도이 캐시를 유지하는 방법이 있습니까?
답변:
vmtouch 를 사용 하여 파일을 페이지 캐시 (디스크 캐시)에 추가 할 수 있습니다 .
넣어 nohup vmtouch -dl <files or directories> &
당신의 /etc/rc.local
부팅 페이지 캐시에 추가 할 파일 및 잠금 파일. 페이지 캐시에 파일을 추가하려고하지만 파일을 메모리에 고정하지 않으려면 -t
플래그 대신 플래그를 사용하십시오 -ld
.
페이지 캐시에 대한 자세한 내용은 여기 , 여기 및 wikipedia를 참조하십시오 .
vmtouch
부팅 명령으로 사용하지 않으면 전체 작업 속도가 느려 집니까? 매번 (비싸게) 다시 생성하는 대신 부츠 전체에서 캐시를 보존하려고했습니다.
"재부팅 전반에 걸쳐 보존", 의심합니다. 그러나 부팅 할 때 캐시를 간단하게 재 구축 할 수 있습니다. 이는 거의 동일한 지연 시간을 뺀 것과 거의 같습니다.
파일을 작성 /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
(기본적으로 설치, 확실히 패키지 관리자를 통해 사용할 수 있습니다되어야한다 데비안 풋 그들 coreutils
과 util-linux
각각은,)의 우선 순위를 낮추는 find
것이 다른 어떤 방해해서는 안 수단 가능한 가장 좋은 수준에 과정을 시스템에서 실행되지만 완료하는 데 약간 더 오래 걸립니다. 커널 find
자체가 stat()
파일 시스템 데이터를 디스크에서 메모리로로드하도록 강제합니다.
캐시가 구축되면, OS가 다른 것을 위해 메모리를 필요로하기 때문에 제거되지 않는 한 캐시를 유지해야합니다. 나는 이것을 잠시 동안 사용했으며 큰 디렉토리에서도 디렉토리 목록 은 위의 cron 작업이없는 것보다 훨씬 빠르지 만 정확한 숫자를 인용 할 수는 없습니다.
locate
제공되는 updatedb
을 사용할 수도 있습니다 . en.wikipedia.org/wiki/Locate_(Unix)
locate
사용 ls
합니다. 그리고 때때로 find
. (또한 find와 ls는 OP가 요구하는 특정 명령입니다.) 여기서 사용하는 요점은 find
stat ()를 호출하는 스토리지의 모든 항목을 반복하므로 커널은 메타 데이터를 메모리에로드해야합니다. 일단 있으면 재부팅을 통해 저장된 것처럼 좋습니다.