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 값이 줄어들게 된다.
'각종 Tips > Ubuntu' 카테고리의 다른 글
[Ubuntu / 우분투] 같은 이름 프로세스 한번에 종료하기 (0) | 2021.10.09 |
---|---|
[Ubuntu / 우분투] 리눅스 파일 split으로 쪼개기 (0) | 2021.08.03 |
[Ubuntu / 우분투] 모든 압축파일 해제하기, unzip * (0) | 2021.07.10 |
[Docker / Linux] 도커 볼륨에서 실수로 파일을 삭제했을 때 (0) | 2021.07.03 |
[Docker / Linux] 도커 볼륨의 용량이 너무 클 때 해결법 (0) | 2021.07.03 |