2009-06-16 8 views
1

디스크 캐시가 최상의 상태에있을 때 (프로그램 실행에 필요한 모든 파일이 메모리 캐시에있을 때 Windows 프로그램의 성능을 비교하려고합니다. 이 상태가됩니다), 캐시가 최악의 상태에 있으면 완전히 비어 있습니다.OS 디스크 읽기 캐시 무효화

캐시가 완전히 비어 있는지 확인하는 유일한 방법은 컴퓨터를 재부팅하는 것입니다. 그러나 너무 많은 시간이 걸리기 때문에 이상적이지 않습니다. 다시 부팅하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 동기화를 시도했지만 읽기 캐시가 무효화되지 않습니다 ...

답변

1

CreateFile으로 전화 할 때 FILE_FLAG_NO_BUFFERING 플래그를 포함하십시오. 자세한 내용은 MSDN의 CreateFile reference page을 참조하십시오. 특히 requirements에 유의하십시오.

이렇게하기 위해 코드를 수정하는 데 너무 많은 노력이 필요한 경우 간단한 유틸리티 프로그램을 작성하여 실제 메모리보다 큰 파일을 읽으십시오. 이것은 관심있는 파일을 파일 시스템 캐시에서 플러시하기에 충분할 수 있습니다.

+0

이 플래그가있는 CreateFile은 제대로 작동하는 것으로 보이지만 전체 폴더 (및 하위 폴더)에 대해이 작업을 수행 할 방법을 찾고 있습니다. 무효화해야 할 폴더에 몇 백만 개의 파일이 있다고 생각하기 때문에 모든 파일을 반복하지 말아야한다는 것을 정말로 기대하고 있습니다. 거대한 파일을 읽는 유틸리티를 작성하는 방법은 캐시를 비우는 방법을 어떻게 보증합니까? 어쩌면 Windows는 모든 거대한 파일을 캐시하지 않고 더 많은 파일을 저장할 공간을 확보하기 위해 캐시를 관리합니다. 아니면 아닐지도 모르겠다. 사실 나는 모른다. 어쨌든, 나는 그것을 시도하고 결과를 볼거야. –

+0

많은 수의 파일을 반복하는 경우 해당 플래그를 추가 할 수있는 CreateFile 호출 수가 적지 않습니까? 이는 읽기를 위해 파일을 여는 것이지, 캐시를 무효로 만드는 2 단계 프로세스가 아니라 파일을 여는 부분입니다. –

관련 문제