반응형


 

Linux에서 buffer/cache 비우기

 

 

linux에서 현재 메모리 상태를 보는 top 명령을 통해 메모리 상태를 보게 되면, buff/cache라는 값이 있다는 것을 확인할 수 있다. Used도 아니고 Available도 아닌 이 메모리는 무엇일까?

 

이 메모리는 실제로 사용되는게 아니라, 버퍼와 캐시에서 사용하는 메모리 할당량이다. 물론 일반적으로 캐시에 저장된 값은 자주 사용되기 때문에 OS에서 등록한 정보이고, 이로 인해 성능의 향상을 불러오지만, 딥러닝등 일반적이지 않은 대용량 데이터를 빈번히 Load 해야 하는 상황에서는 캐시에 저장된 값을 자꾸 바꿔주는데 들어가는 비용이 더 커지기 때문에, 학습 스크립트를 모두 돌린 후에, 새로운 학습 스크립트를 돌리기 위해서는 미리 비워주는 것이 오히려 더 좋다.

 

즉, cache의 hit ratio가 앞으로 극히 낮아질 것이라는 확신이 있다면, buffer/cache를 미리 비워줌으로써 새로운 데이터를 금방 할당받을 수 있도록 하는 것이 유리하다.

 

Page Cache 해제


sync
$echo 1 > /proc/sys/vm/drop_caches

 

첫줄의 sync는 플러싱을 해주는 역할로, 현재 사용하고 있는 메모리 데이터를 동기화해주는 역할을 한다.

삭제 전에 sync를 통해 불필요한 메모리 손실이 일어나지 않도록 한다.

 

 

Dentries, I-nodes 해제


sync
echo 2 > /proc/sys/vm/drop_caches

 

Page Cache, Dentries, I-nodes 모두 해제


sync
echo 3 > /proc/sys/vm/drop_caches

 

위와 같은 방식을 통해, 버퍼/캐시 메모리를 모두 비워주고 나면, Free Memory의 값이 커지고, Buff/Cache 값이 줄어들게 된다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,