운영 체제 캐시 없이 쿼리 실행

운영 체제 캐시 없이 쿼리 실행

항상 I/O가 많기 때문에 캐싱이 많지 않은 클라이언트 사이트를 시뮬레이션하고 싶습니다. 내 머신(정확히 말하면 내 가상 머신)에서 SQL 쿼리와 동일한 제한 사항을 적용하여 SQL 쿼리를 실행하고 싶기 때문에 실행하기 전에 매번 캐시를 플러시해야 할 것 같습니다.

postgres SQL에서 캐시를 플러시해야 합니다(분명히 다시 시작하면 가능합니다). 또한 VM(코드가 실행 중인 곳)과 VM이 실행 중인 호스트 모두에서 OS 캐시를 플러시하여 전체 VM이 최적화되지 않는지 확인해야 합니다. 내 목표는 완전히 최적화되지 않은 방식으로 쿼리를 실행할 수 있는 것입니다(어떤 종류의 캐싱도 없고, OS도 없고, postgres도 없고, 아무것도 없음).

그래서 저는 VM과 호스트 컴퓨터에서 다음 명령을 실행했습니다(포럼에서 찾았습니다).

sync;
echo 1 > /proc/sys/vm/drop_caches;
echo 2 > /proc/sys/vm/drop_caches;
echo 3 > /proc/sys/vm/drop_caches;

이것이 적절하다고 생각하시나요? 이 정도면 충분하다고 생각하시나요? 아니면 완전히 다른 방법을 사용해야 합니까?

저는 Red Hat 6.2를 실행하고 있습니다.

답변1

첫 번째는 및 명령을 echo 3 > /proc/sys/vm/drop_caches결합하므로 충분합니다 . 그렇지 않으면 그렇습니다. 캐시를 지우는 데 적합합니다.echo 1echo 2http://linux-mm.org/Drop_Caches

이러한 명령은 기존 캐시만 삭제합니다. 예를 들어 콜드 스타트 ​​환경을 생성하지만 첫 번째 쿼리를 실행한 후에는 캐시가 사용됩니다. 또한 postgres 구성을 최적화 해제하고 shared_buffers.

VM 용으로 사용하는 경우 kvm디스크용 블록 장치를 사용하고 캐시 없이 virtio를 사용하십시오.http://www.linux-kvm.org/page/Tuning_KVM

관련 정보