답변:
또는 테스트에 사용되지 않는 데이터로 캐시를 채운 다음 테스트를 실행하십시오.
Stack Overflow에 대해 같은 질문을했습니다.
/programming/478340/clear-file-cache-to-repeat-performance-testing
Win XP를 사용하고 있었지만 가장 좋은 해결책은 다음과 같습니다.
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와 같은 도구를 사용하십시오.
모범 사례는 벤치마킹중인 테스트 파일이 최소 1GB 테스트 파일을 사용하여 어레이 컨트롤러 캐시 (또는 vm 게스트에서 벤치마킹하는 경우 Windows OS 메모리)보다 2 배 큰지 확인하는 것입니다. 이를 통해 캐싱이 무효화됩니다. 디스크 벤치마킹에 SQLIO 를 사용합니다 . 첨부 된 문서에 풍부한 정보가 있습니다.
이 문제를 해결하는 방법 인 Greg를 반향하면 작업중인 데이터 세트가 사용 가능한 RAM의 양을 크게 초과하는 것입니다. 상당한 양의 컨트롤러 및 디스크 기반 캐시를 포함하는 하드웨어 플랫폼에서 테스트를 수행하는 경우 해당 양을 초과하는지 확인해야합니다. 이렇게하면 캐시의 모든 계층에 도입 된 소프트웨어 최적화보다 실제 성능이 하드웨어 성능과 더 밀접하게 연결됩니다.
즉, 읽기 캐시를 사용하려는 벤치 마크를 실행하기 전에 유용한 데이터의 읽기 캐시를 실제로 제거하려는 경우 읽기 캐시 메모리 바로 아래 크기의 단일 파일로 읽는 방법입니다 파일 작업을 수행하십시오. 캐시를 제거하고이 큰 파일로 채 웁니다. 캐시를 닫으면 관심있는 데이터 가 캐시에서 효과적으로 비워 집니다. 까다로운 부분은 파일의 크기가 얼마나 큰지 파악하는 것입니다. 요즘은 3GB 정도의 크기 일 수 있습니다. 이 시점에서 여러 개의 1GB 정크 파일이 필요할 수 있습니다.
대부분의 옵션은 "수동 항목"이라고 생각합니다. UNIX에서는 각 벤치 마크를 실행하기 전에 장치를 마운트 해제 / 다시 마운트하는 것이 표준이며, 종종 "newfs"를 사용하여 측정합니다. Windows에서 명령 줄 도구를 사용하여 장치를 마운트 해제 / 마운트 할 수 있는지 모르겠지만 자동화가 목표라면 그러한 유틸리티를 찾아 볼 가치가 있습니다.
sync; echo 3 > /proc/sys/vm/drop_caches
. 이는 특정 볼륨과 관련된 캐시뿐만 아니라 모든 캐시 / 버퍼에도 영향을줍니다. 이전에는 Windows와 비슷한 트릭을 찾았지만 찾지 못했습니다.