
Linux에서 읽기에 대한 페이지 캐싱을 끄는 방법이 있습니까? 더 구체적으로 말하자면, 내 프로세스가 디스크에서 직접 읽도록 하고 싶습니다.
내 문제의 설정: Postgres에서 새로운 쿼리 처리 기술을 시도하고 실행 시간을 측정하고 있습니다. 다양한 메서드의 실행 시간을 정확하게 비교하려면 OS 캐시에서 읽기를 꺼야 합니다.
나는 다음 접근법을 읽었지만 그 중 어느 것도 내 경우에 적용되지 않습니다.
- 다음을 사용하여 캐시 지우기
echo 1 > /proc/sys/vm/drop_caches
: 최종 측정 시간을 엉망으로 만들 수 있는 쿼리를 반복할 때마다 이것을 호출해야 합니다. O_DIRECT
프로그램 내에서 사용 : Postgres가 파일을 읽는 방법을 제어할 수 없습니다.- 을 사용하여 내 장치를 마운트합니다
-o sync
. 나는 읽었다여기쓰기 버퍼링이 꺼지는데 캐시 읽기도 비활성화되는지 확실하지 않습니까? - 사용
hdparm -W 0 /dev/sda1
: 다시 말하지만 쓰기용 캐시만 비활성화됩니다. - 설명된 애플리케이션별 스크립트 사용여기: 단일 애플리케이션이 있으면 작동하지만 내 설정에는 Postgres 서버가 서비스(많은 스레드 포함)와 클라이언트로 있습니다. 100% 확신할 수는 없지만 Postgres와 같은 서비스가 아닌 일반 응용 프로그램에서 스크립트가 작동하는 것 같습니다.