테스트를 위해서는 zfs의 캐시가 차가워야 합니다.
캐시 디스크를 제거하고 풀을 내보내고 가져오는 방식으로 풀에서 캐싱을 플러시할 수 있습니다. 이것은 내가 원하는 효과를 제공합니다. 하지만 풀을 내보내고 싶지 않습니다.
동일한 효과를 얻을 수 있는 덜 과감한 방법이 있습니까?
내가 찾고 있는 것은 다음과 같습니다.
echo 3 > /proc/sys/vm/drop_caches
ext4에 대해 내가 원하는 것을 수행합니다.
배경
알고리즘을 다양한 방식으로 실행할 수 있습니다. 나는 최상의 성능에 관심이 없습니다. 나하다최악의 성능에 주의하세요. 최악의 경우는 콜드 데이터(너무 오래 전에 접촉되어 더 이상 ARC/L2ARC에 없는 데이터)일 것입니다.
알고리즘을 실행하는 최적의 방법을 선택하려면 동일한 테스트 세트에서 실행할 수 있어야 합니다. 그리고 이 테스트 세트는 차가워야 합니다. 이는 ZFS의 캐싱 전략과 완전히 반대됩니다. 동일한 테스트 세트를 계속해서 실행하면 데이터가 ARC에 저장됩니다. 이는 일반적인 상황에서는 완벽하게 이해되지만 여기서는 그렇지 않습니다.
내 개발자 컴퓨터에서는 내보내기/가져오기가 가능하지만 프로덕션 환경에서는 이 작업을 수행할 수 없습니다. 캐시를 플러시하지만,~ 할 것이다생산에 허용될 수 있습니다.
ARC가 계속 작동하여 콜드 데이터를 읽은 후 캐시하는 경우를 선호하지만(ext4와 유사) 테스트 중에는 ARC를 완전히 비활성화한 상태로 사용할 수 있습니다.
답변1
echo 3 > /proc/sys/vm/drop_caches
사용된ZFS 캐시를 지우려고 했으나 최근 일부 커밋에서 부분적으로만 지우도록 변경되었습니다.
zfs_arc_shrinker_limit
이전 동작을 복원하려면 모듈 매개변수를 다음으로 설정해야 합니다 0
(참조여기).
따라서 풀을 내보내지 않고 ARC를 삭제하려면 다음을 수행하세요.
echo 0 > /sys/module/zfs/parameters/zfs_arc_shrinker_limit
echo 3 > /proc/sys/vm/drop_caches
위의 내용이 삭제됩니다.거의모두 ZFS ARC이며 기본 풀 메타데이터와 관련된 소수의 MB만 남깁니다.