처음 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가 요구하는 특정 명령입니다.) 여기서 사용하는 요점은 findstat ()를 호출하는 스토리지의 모든 항목을 반복하므로 커널은 메타 데이터를 메모리에로드해야합니다. 일단 있으면 재부팅을 통해 저장된 것처럼 좋습니다.