zfs: 내보내지 않고 캐시 플러시

zfs: 내보내지 않고 캐시 플러시

테스트를 위해서는 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만 남깁니다.

관련 정보