메뉴 건너뛰기

XEDITION

Open

linux buffer/cache 비우기

proin 2022.01.04 13:21 조회 수 : 5

https://blog.asamaru.net/2016/01/19/centos-emptying-the-buffers-cache/


예전에 리눅스에서 swap 메모리 초기화에서 swap 메모리를 비우는 방법을 남겼다. 이번엔 swap이 아닌 "buff/cache"를 비우는 방법을 남기고자 한다.

linux에서 top 또는 free 명령으로 메모리 상황을 보면 "buff/cache" 항목이 있다. 이 부분은 실제로 직접 사용하고 있는 메모리가 아니라 말그대로 버퍼와 캐시에 사용된 메모리를 뜻한다. 그렇다면 "굳이 왜 이것을 비우려고 하는가?"하는 의문이 생길 수 있다.

일반적으로 캐시는 느린 장치의 데이터를 빠른 장치에 임시 보관해두고 사용함으로써 성능을 높이는 것이 목적이다. 따라서 캐시는 당연히 사용하는게 좋다. 하지만 hit(적중률)가 낮은 경우엔 캐시를 사용하는 것이 부정적인 영향을 미칠 수 있다. 빠른 장치는 당연히 공간이 한정되어 있기 때문에 모든 정보를 캐시할 수 없으므로 캐시를 관리해야 한다. 이 과정에서 발생하는 비용이 캐시를 사용하는 것보다 크다면 캐시는 사용하지 않는 것이 좋다는 것이다. 캐시에 관한 자세한 내용은 여기서 다루고자하는 것이 아니니 이정도만 설명하고 넘어가자.

실질적으로 이것이 어디에 필요한지에 대해 알아보자.

linux에서는 기본적으로 디스크 상의 파일을 읽을 경우 해당 파일을 닫아도 free 메모리로 모두가 즉시 반환되지 않는다. 이유는 이 파일의 정보를 다음 사용에 대비해 cache하기 때문이다. 보다 자세한 내용을 확인하고 싶다면 메모리 관리 (Memory Management)를 참고하자. 이런 파일의 cache와 관련하여 os / mysql 등 여러 분야의 성능 튜닝 내용 등을 쉽게 찾을 수 있다.

대량의 파일이 관리되는 서버의 파일 cache hit가 낮은데 비해 buffer / cache 메모리 사용량이 높을 경우 해당 cache 기능을 끄거나 주기적으로 비움으로써 성능을 개선할 수 있다.

우선 아래와 같이 선택적으로 cache를 비울 수 있다. sync 명령을 사용하는 이유는 해당 cache 기능을 비우기 전에 사용중인 데이터를 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

위에서 1,2,3으로 지정한 값들은 영구적 설정이 아니라 설정되는 그 시점에만 적용된다. 바꿔서 이야기 하자면 /proc/sys/vm/drop_caches는 파일이 아니라 명령어인 셈이다. 실제로 아래와 같이 기본값인 0으로 되돌리려고하면 오류가 난다.

$ echo 0 > /proc/sys/vm/drop_caches
-bash: echo: write error: 부적절한 인수

 


 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
» linux buffer/cache 비우기 proin 2022.01.04 5
31 Python3를 사용하여 openalpr 실행 proin 2020.10.20 5
30 [android 개발] UI Thread 외부에서 UI 관련 작업 호출 하기 proin 2020.10.18 3
29 안드로이드 자바 타이머 (Timer) 정지 후 재시작 하기, java.lang.IllegalStateException: TimerTask is scheduled already proin 2020.10.17 3
28 안드로이드 타이머 사용법 기초 - Android Timer 주기적으로 메서드 실행하기 proin 2020.10.17 2
27 WINDOWS 10 탐색기 새로고침 버그 proin 2020.10.16 4
26 bjpublic / minecraft-python 마인크래프트와 함께 즐겁게 파이썬 proin 2020.08.27 2
25 bjpublic / aws 당신이 지금 알아야 할 AWS proin 2020.08.27 2
24 bjpublic / MLpythonpiece 머신러닝을 위한 파이썬 한 조각 proin 2020.08.27 3
23 bjpublic / smartwork 나만의 스마트워크 환경 만들기 proin 2020.08.27 3
22 bjpublic / whitehacker 화이트 해커를 위한 웹 해킹의 기술 proin 2020.08.27 2
21 bjpublic / TMI-Deeplearning 친절한 실전 딥러닝 수업 proin 2020.08.27 2
20 [펌] 포토샵 비정품 경고 알림 해제하기 proin 2020.05.11 1
19 패킷트레이서 5.3.3 file proin 2019.03.20 4
18 라즈베리파이 3 B+ 라즈비안 외 지원안되는 OS 설치 방법 file proin 2019.03.15 2
17 SoftEtherVPN proin 2019.01.08 6
16 옵테인 메모리 달면 HDD가 SSD 처럼 빨라진다? 정말? - IT 동아 proin 2018.10.01 2
15 XE exe 업로드 시 -x 붙는 현상 수정 방법 proin 2018.08.20 51
14 Vim 단축키 정리 proin 2018.06.09 4
13 윈도우의 VMware에 macOS Sierra 설치하기 proin 2018.05.30 4
위로