Linux buffer/cache 비우기

최대 1 분 소요

리눅스(linux)에서 top이나 free 명령어로 메모리 상태를 확인할 수 있다. 버퍼와 캐시는 자주 사용하는 파일등의 정보를 저장하여 성능을 빠르게 유지할 수 있는 장점이 있지만, 너무 많아지면 가용 메모리의 부족으로 다른 문제를 야기시킬 수 있다. 그래서 버퍼/캐시의 사용량이 너무 높을 경우 해당 기능을 끄거나, 주기적으로 비움으로 성능을 개선할 수 있다.

아래 명령어로 캐시를 비울 수 있다. sync를 사용하는 이유는 캐시 메모리에 올라간 데이터를 디스크로 옮겨준다. 이 과정을 거치치 않고 캐시를 삭제하면, 데이터가 유실될 수도 있다.

  • pagecache 비우기
    sync
    echo 1 > /proc/sys/vm/drop_caches
    또는
    sync
    sysctl -w vm.drop_caches=1
    
  • dentries, inodes 비우기
    sync
    echo 2 > /proc/sys/vm/drop_caches
    또는
    sync
    sysctl -w vm.drop_caches=2
    
  • pagecache, dentries, inodes 모두 비우기
    sync
    echo 3 > /proc/sys/vm/drop_caches
    또는
    sync
    sysctl -w vm.drop_caches=3
    

주기적으로 캐시 비우기

주기적으로 캐시를 삭제하고 싶으면, crontab -e 명령어를 사용하면 된다.

0 3 * * 0 sync && echo 3 > /proc/sys/vm/drop_caches # 매일 오전 3시에 캐시 비우기