Windows 디스크 읽기 캐시를 지우는 방법?


13

성능 테스트를 위해 Windows 디스크 읽기 캐시를 지워야합니다. 인터넷 검색을 시도했지만 재부팅이나 다른 수동 작업 이외의 것을 찾을 수 없습니다. 포기하기 전에 Windows 디스크 읽기 캐시를 지우는 방법을 아는 사람이 있는지 알고 싶습니다. Windows 7에서 테스트 중이지만 Windows XP 솔루션에도 관심이 있습니다.

답변:


3

또는 테스트에 사용되지 않는 데이터로 캐시를 채운 다음 테스트를 실행하십시오.


1
또는 사용 가능한 모든 RAM을 사용할 수 있습니다. Windows는 해당 RAM을 사용하기 위해 파일 캐시를 해제합니다. 자세한 내용은 Stephen Denne이 제공 한 답변을 참조하십시오.
Ultralisk

나는 '해결 방법'이 적은 것을 원했지만 귀하의 제안은 내 상황에서 자동 테스트 스크립트로 구현하는 것이 가장 쉽다고 생각합니다. 제안 해 주셔서 감사합니다.
Sebastiaan M

7

Stack Overflow에 대해 같은 질문을했습니다.

/programming/478340/clear-file-cache-to-repeat-performance-testing

Win XP를 사용하고 있었지만 가장 좋은 해결책은 다음과 같습니다.

  1. MemAlloc의 사본 몇 개를 실행하십시오.
  2. 각각 하나씩, 많은 양의 메모리를 몇 번 할당하십시오
  3. 프로세스 탐색기를 사용하여 시스템 캐시 크기가 매우 낮은 수준으로 감소하는 것을 관찰하십시오
  4. MemAlloc 프로그램을 종료하십시오

3

Windows XP 파일 시스템 캐시를보다 잘 보려면 Tim Murgent의 ATM을 사용해보십시오 . 파일 시스템 캐시 작업 세트 크기와 대기 목록 크기를보다 자세하고 정확하게 볼 수 있습니다. Windows XP의 경우 V2 및 V3에 Server 2003, Vista 이상이 필요하므로 여기 에서 다운로드 할 수있는 이전 버전의 ATM이 필요합니다.

Cacheset이 "Cache WS Min"을 줄이더라도 실제 데이터는 여전히 대기 목록 형태로 존재하며 다른 위치로 대체 될 때까지 계속 사용할 수 있습니다. 그런 다음 다른 것으로 바꾸려면 MemAlloc, Chad Austin의 flushmem 또는 Windows Server 2003 Resource Kit 도구의 Consume.exe와 같은 도구를 사용하십시오.


3

RAMMap을 사용 했습니다 . 몇 가지 유형의 할당 메모리를 확보 할 수 있습니다.

파일 캐시의 내용은 "파일 요약"탭에서 확인할 수 있으며 "빈"메뉴에서 "빈 대기 목록"을 선택하면이 캐시가 지워집니다.


이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
slm

1

머신을 재부팅하십시오.


이것이 '큰 망치'솔루션입니다. Stephen Denne의 답변을 참조하십시오.
Ultralisk

1

모범 사례는 벤치마킹중인 테스트 파일이 최소 1GB 테스트 파일을 사용하여 어레이 컨트롤러 캐시 (또는 vm 게스트에서 벤치마킹하는 경우 Windows OS 메모리)보다 2 배 큰지 확인하는 것입니다. 이를 통해 캐싱이 무효화됩니다. 디스크 벤치마킹에 SQLIO 를 사용합니다 . 첨부 된 문서에 풍부한 정보가 있습니다.


내가하려고하는 것 중 하나는 프로젝트가 여러 구성에서 얼마나 빨리 빌드되는지 벤치 마크하는 것입니다. 나는 생각하는 파일의 크기를 늘릴 수 없습니다. :)
Sebastiaan M

1

이 문제를 해결하는 방법 인 Greg를 반향하면 작업중인 데이터 세트가 사용 가능한 RAM의 양을 크게 초과하는 것입니다. 상당한 양의 컨트롤러 및 디스크 기반 캐시를 포함하는 하드웨어 플랫폼에서 테스트를 수행하는 경우 해당 양을 초과하는지 확인해야합니다. 이렇게하면 캐시의 모든 계층에 도입 된 소프트웨어 최적화보다 실제 성능이 하드웨어 성능과 더 밀접하게 연결됩니다.

즉, 읽기 캐시를 사용하려는 벤치 마크를 실행하기 전에 유용한 데이터의 읽기 캐시를 실제로 제거하려는 경우 읽기 캐시 메모리 바로 아래 크기의 단일 파일로 읽는 방법입니다 파일 작업을 수행하십시오. 캐시를 제거하고이 큰 파일로 채 웁니다. 캐시를 닫으면 관심있는 데이터 가 캐시에서 효과적으로 비워 집니다. 까다로운 부분은 파일의 크기가 얼마나 큰지 파악하는 것입니다. 요즘은 3GB 정도의 크기 일 수 있습니다. 이 시점에서 여러 개의 1GB 정크 파일이 필요할 수 있습니다.


0

대부분의 옵션은 "수동 항목"이라고 생각합니다. UNIX에서는 각 벤치 마크를 실행하기 전에 장치를 마운트 해제 / 다시 마운트하는 것이 표준이며, 종종 "newfs"를 사용하여 측정합니다. Windows에서 명령 줄 도구를 사용하여 장치를 마운트 해제 / 마운트 할 수 있는지 모르겠지만 자동화가 목표라면 그러한 유틸리티를 찾아 볼 가치가 있습니다.


1
언 마운트 / 원격이 어떤 이유로 든 옵션이 아닌 경우 Linux에서 수행 할 수도 있습니다 sync; echo 3 > /proc/sys/vm/drop_caches. 이는 특정 볼륨과 관련된 캐시뿐만 아니라 모든 캐시 / 버퍼에도 영향을줍니다. 이전에는 Windows와 비슷한 트릭을 찾았지만 찾지 못했습니다.
David Spillett

0

방금 StackOverflow에 대한 내 질문에 게시 한이 답변을 살펴보십시오 .

기본적으로 : 쓰기 공유 액세스가 없는CreateFile 핸들 을 시도 하면 오류를 반환하더라도 캐시를 플러시 한 다음 무효화합니다.

도움이 되었기를 바랍니다!

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