리눅스 메모리 비우기


  • pagecache 해제

#!/bin/bash

sync
echo 1 > /proc/sys/vm/drop_caches
echo "Drop Cache"


systemd Service 


 [Unit]

Description=[Drop Cache] 


[Service]

Type=idle

User=root

ExecStart=/home/root/drop_caches.sh

Restart=always

RestartSec=1min

[Install]

WantedBy=multi-user.target




  • dentries, inodes 해제
  • pagecache, dentries, inodes 모두 해제
  • 플러싱

1. Page Cache 란?
 Linux 는 I/O 성능을 높이기 위해 Page Cache 를 사용한다. 
 물리적인 저장/통신 장치와 데이터를 주고 받을 때 메모리에 먼저 적제한 후에 데이터를 주고 받는데, 동일한 데이터에 대해 접근 할 경우 메모리에서 바로 가져오도록 하여 I/O 성능을 높이기 위함이다. 이를 Page 단위로 관리하여 흔히 Page Cache 라고 한다.
 한번이라도 데이터를 읽거나 쓴 적이 있다면 메모리는 Page Cache 에 적재되고 

drop_caches 는 non destructive operation 이기 때문에 자주써도 손실이 발생하지 않는다.
캐쉬 메모리중 write buffer 라는 파일쓰기 대기버퍼(dirty cache 라고함) , 이러한 것들은 drop_cache 로 사라지지 않는다.
sync 명령어는 이러한 write buffer 내용을 디스크에 쓰고 drop 할수 있는 cache 로 바꾼다.

참고 : https://blog.lael.be/post/1090


2. vfs_cache_pressure

vfs_cache_pressure


참고
제타위키 : 리눅스 캐시 메모리 비우기 : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BA%90%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EB%B9%84%EC%9A%B0%EA%B8%B0


리눅스의 페이지 캐시와 버퍼 캐시: https://brunch.co.kr/@alden/25


https://brunch.co.kr/@alden/14

'리눅스커널' 카테고리의 다른 글

[Linux]Improving performance/Boot process  (0) 2018.10.03
udev  (0) 2017.03.15
[gcc] floating point ABI 에 대해서  (0) 2017.03.14
rootfs  (0) 2016.11.15
DTB (비글본)  (0) 2016.09.20

+ Recent posts