디스크 캐시/버퍼를 지우려면 일반적으로 다음 명령을 실행합니다.
# sync && echo 3 > /proc/sys/vm/drop_caches
그러나 명령을 입력한 후에는 free
실제로 열에 아무것도 보고되지 0
않습니다 buff/cache
. 예는 다음과 같습니다.
# free -m
total used free shared buff/cache available
Mem: 7.6Gi 2.9Gi 3.6Gi 238Mi 1.1Gi 4.1Gi
Swap: 9.8Gi 1.0Mi 9.8Gi
Total: 17Gi 2.9Gi 13Gi
# sync && echo 3 > /proc/sys/vm/drop_caches
# free -m
total used free shared buff/cache available
Mem: 7.6Gi 2.8Gi 4.2Gi 224Mi 588Mi 4.2Gi
Swap: 9.8Gi 1.0Mi 9.8Gi
Total: 17Gi 2.8Gi 13Gi
따라서 캐시에 있었다 1.1G
가 588M
.
이것을 588M
줄일 수 있나요 0
? (아마도) 그렇지 않다면 그 이유는 무엇입니까? 그리고 sync
파일을 내보내고 쓴 후에 캐시/버퍼가 얼마나 남았는지 미리 알 수 있는 방법이 있습니까 /proc/sys/vm/drop_caches
?
답변1
아니요, 캐시에는 (보통 열려 있는) 파일에 대한 버퍼뿐만 아니라반품실행 중인 애플리케이션 및 라이브러리의 디스크 이미지.
그리고 동기화를 실행하고 /proc/sys/vm/drop_caches 파일에 쓴 후 미리 캐시/버퍼의 양을 알 수 있는 방법이 있습니까?
나에게 이것은 매우 사소한 작업처럼 보이지만 해결책이 있을 수 있습니다. 열려 있는 애플리케이션/라이브러리 파일의 크기를 계산하면 올바른 방향을 얻을 수 있지만 그렇지 않습니다. 예를 들어 Google Chrome을 실행하는 경우 바이너리 크기는 160MB이지만 완전히 캐시되지는 않습니다. 모든 기능이 동시에 실행되지는 않습니다.
원하는 답에 가까워야 하는 메모리 범위를 계산할 수 있으며 /proc/$PID/maps
, 실행 중인 애플리케이션 간에 공유되는 범위도 확인할 수 있습니다.