Windows 7에서 파일 시스템 캐시의 기능은 무엇입니까?


16

망할 놈의 속도가 느린 이유를 진단 문서에서는이 흥미로운 항목이 있습니다 :

파일 시스템 캐시 활성화

Windows의 파일 시스템 계층은 기본적으로 Linux와 다릅니다 (Git의 파일 시스템 액세스가 최적화 됨). 이 문제를 해결하기 위해 Git for Windows는 초기 "웜업 (warm-up)"이후 많은 경우에 작업을 가속화하는 파일 시스템 캐시를 제공합니다. 저장소별로 파일 시스템 캐시를 활성화 할 수 있습니다.

git config core.fscache true

Git에서이 옵션을 활성화하면 실제로 무엇이 변경됩니까? Windows 7의 파일 시스템 캐시는 어떻게 생겼으며 캐시되는 것은 무엇입니까? "초기 예열"에는 무엇이 필요합니까?

답변:


10

다음과 git config --help같이 말합니다.

core.fscache
일부 작업에 파일 시스템 데이터를 추가로 캐싱 할 수 있습니다.

Windows 용 Git은이를 사용하여 파일 단위로 lstat 파일을 수행하는 대신 전체 디렉토리의 lstat 데이터를 대량으로 읽고 캐시합니다.

많은 파일 시스템 요청을 수행하는 대신 git은 디렉토리의 모든 파일에 대한 정보를 얻기 위해 한 번만 요청합니다.

커밋에서 더 많은 기술 설명을 찾을 수 있습니다 fscache:
Win32 : mingw의 lstat 및 dirent 구현 아래에 캐시 추가

느린 lstat 에뮬레이션으로 인해 작업 트리 상태를 확인하는 것이 Windows에서 상당히 느립니다 (git는 인덱스의 각 파일에 대해 lstat를 한 번 호출합니다). Windows 운영 체제 API는 단일 파일을 확인하는 것보다 전체 디렉토리의 상태를 스캔하는 데 훨씬 더 나은 것 같습니다.

lstat 데이터에 캐시를 사용하는 lstat 구현을 추가하십시오. 캐시 누락은 전체 상위 디렉토리를 읽고이를 캐시에 추가합니다. 동일한 디렉토리에 대한 후속 lstat 호출은 캐시에서 직접 제공됩니다.

또한 캐시에서 디렉토리 목록을 작성하고 사용하도록 opendir / readdir / closedir를 구현하십시오.

캐시는 파일 시스템 변경 사항을 추적하지 않으며 수정 파일 API에 연결하지 않으므로 작업 복사본을 수정하지 않는 git 함수에 대해 명시 적으로 활성화해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.