IT/Linux

리눅스 버퍼, 캐시 메모리 삭제 및 자동 삭제

조스톡 2022. 9. 17. 12:00
728x90
반응형

 

기본적으로 리눅스는 메모리를 free 상태로 있는 것보다 buff/cache 상태로 존재하려 한다고 하나, 버퍼/캐시 메모리를 주기적으로 정리해 줘서 보다 쾌적한 서버 자원을 확보하는 것도 좋을 수 있다.

 

 

 

캐시메모리 삭제 방법

 

아래는 방식별로 기재한 것으로, 원하는 방식을 골라서 사용하면 된다.

 

캐시메모리는 pagecache와 dentries, inodes 두 종류로 나뉜다.

 

 

pagecache 해제

 

  • 동일한 데이터에 접근할 경우 메모리에서 바로 가져오도록 하여 I/O 성능을 높이는 캐시.
echo 1 > /proc/sys/vm/drop_caches

 

 

dentries, inodes 해제

 

  • 파일의 자료구조로 보다 빠른 데이터 접근을 위한 캐시로, dentries는 경로명 탐색 역할도 수행한다.
echo 2 > /proc/sys/vm/drop_caches

 

pagecache, dentries, inodes 모두 해제

 

echo 3 > /proc/sys/vm/drop_caches


 

캐시메모리 정리(pagecache, dentries, inodes) + sync

 

  • 캐시메모리 중 write buffer라는 파일 쓰기 대기 버퍼는 drop_cache로 사라지지 않는다.
  • sync 명령어는 메모리의 데이터를 디스크에 저장하여 동기화시키는 작업으로, write buffer 내용을 디스크에 쓰고 drop 할 수 있는 캐시로 바꾼다.
  • 그렇기에 sync 후 drop_caches를 하면 보다 많은 메모리가 확보된다.
sync && echo 3 > /proc/sys/vm/drop_caches

 

 

자동으로 캐시 비우기(크론탭 crontab)

 

'crontab -e'를 입력한 뒤, 마지막 줄에 원하는 내용을 입력하면 된다.

 

디스크 I/O 가 많은 시간에 캐시메모리를 정리하면 CPU 부하량이 증가 할 수 있으므로 사용이 적은 시간에 설정 하는 것이 좋다.

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

 

728x90
반응형