리눅스 버퍼 캐시된 메모리 삭제하는 방법

리눅스

리눅스를 이용해 서버를 운영하다 보면 버퍼/캐시가 쌓여 메모리를 점유하는 것을 top 또는 free -m 명령어로 확인할 수 있는데요.

버퍼와 캐시 메모리는 자주 사용하는 파일 내용이나 파일 위치등을 저장하기 때문에 캐시로 저장되어 있으면 디스크의 I/O를 줄여서 퍼포먼스를 빠르게 유지할 수 있는 장점이 있지만 장착된 램의 용량이 부족한 경우 스왑을 사용할 수도 있기 때문에 간헐적으로 메모리를 많이 사용하는 타이밍에는 성능 저하로 연결되게 됩니다.

이럴때 주기적으로 캐시 메모리를 비워 서버를 관리할 수 있습니다.

튜토리얼 환경 : 우분투 16.04 서버

캐시 메모리 비우기

캐시 메모리를 비우기 위해서/proc/sys/vm/drop_caches 를 사용합니다. 경로 때문에 파일 처럼 보이지만 바이너리 명령어로 다음과 같이 사용할 수 있습니다.

sync

echo 1 > /proc/sys/vm/drop_caches

echo 2 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

메모리를 비우기 전 sync 명령어로 메모리에 올라간 데이터를 디스크로 옮겨줍니다. 이 과정을 거치지 않으면 흡사 프로그램을 강제 종료한 것 처럼 데이터가 유실될 수도 있습니다.

/proc/sys/vm/drop_caches 명령어는 위 처럼 3단계로 사용할 수 있는데 1은 Page Cache 비우기, 2는 dentries, inodes 비우기, 3은 모두 비우는 명령어 입니다.

페이지 캐시는 파일의 내용을 메모리에 올리는 구조이고 dentries는 데이터의 위치(directory Entry) , inodes는 파일과 디렉토리의 정보를 담고 있는 자료 구조를 담당합니다.

자동으로 캐시 메모리 비우기

위 명령어로 관리자가 수동으로 캐시 메모리를 비울 수 있지만 만일 주기적으로 캐시를 삭제하고 싶은 경우에는 크론탭(crontab)에 명령어를 등록할 수 있습니다.

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

crontab -e 명령어로 크론탭을 실행한 다음 맨 마지막 줄에 위 명령어 둘 중 하나를 추가한 다음 저장합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.

Linux 크론탭 Crontab 사용법
Linux 크론탭(Crontab) 사용법
크론탭(Crontab)은 리눅스에서 정해진 시간에 스크립트나 데몬 등을 실행하는 스케줄러(Scheduler) 기능입니다. 특정 시간, 요일에 특정한 작업을 실행해야 하거나 반복 작업을 할…
우분투 컴퓨터 이름 Hostname 변경하는 방법
우분투 컴퓨터 이름 hostname 변경하는 방법
우분투에서 터미널을 열거나 네트워크 공유를 사용해야할 때 표시되는 컴퓨터 이름은 hostname이라고 불리며 hostname을 변경하면 우분투에 표시되는 컴퓨터 이름을 지정할 수…