본문 바로가기

Linux

리눅스 캐쉬 메모리 정리

sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

=======================================================================================

Clearning the Linux Memory cache can be a quick way to regain system resources. Writing to the drop_cache process will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

  • To free pagecache:# echo 1 > /proc/sys/vm/drop_caches
  • To free dentries and inodes:# echo 2 > /proc/sys/vm/drop_caches
  • To free pagecache, dentries and inodes:# echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

Example - Memory before:

[root@server ~]# free -m
total       used       free     shared    buffers     cached
Mem:          7860       7040        820          0        343       5076
-/+ buffers/cache:       1620       6240
Swap:         3999          0       3999

[root@server ~]# sync
[root@server ~]# echo 3 > /proc/sys/vm/drop_caches

Memory after:

[root@server ~]# free -m
total       used       free     shared    buffers     cached
Mem:          7860       1279       6581          0          0         33
-/+ buffers/cache:       1245       6615
Swap:         3999          0       3999


==============================================================================================================

1.  상황  현재 프로세스도 없는데 메모리가 20% -> 80%가 된경우가 있다. 
   $> sar -r 실행 
   01시쯤부터 cache 메모리가 확 줄어들고 있음
 
  


해당 시간때에 파일 읽기 많은 프로세스가 실행되었된것으로 보임(로그 확인으로 특이한 프로세스가 수행중이었음)


$> free -k 결과  buffers 에 6G 정도있고 cached에는 1G 내외였음 시간이 흐르면서 cached는 계속 늘어나고있음
  
 
2.  확인 사항 
$> ps -ef , ps aux , top 으로 모니터링 해도 메모리를 많이 잡고 있는 process 는 없음 

$>cat /proc/meminfo 수행 결과 (slab 메모리가 다른 서버에 비해 많음) 
MemTotal:      8166480 kB
MemFree:         87520 kB
Buffers:        412972 kB
Cached:        1436408 kB
SwapCached:       5320 kB
Active:        2861672 kB
Inactive:       507492 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      8166480 kB
LowFree:         87520 kB
SwapTotal:     4192956 kB
SwapFree:      4174184 kB
Dirty:             352 kB
Writeback:           0 kB
Mapped:        1551948 kB
Slab:          4674220 kB
CommitLimit:   8276196 kB
Committed_AS:  4289248 kB
PageTables:      12016 kB
VmallocTotal: 536870911 kB
VmallocUsed:    264492 kB
VmallocChunk: 536606199 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     2048 kB

-$> slabtop 실행 결과 
 Active / Total Objects (% used)    : 7824739 / 8227380 (95.1%)
 Active / Total Slabs (% used)      : 1168335 / 1168343 (100.0%)
 Active / Total Caches (% used)     : 87 / 131 (66.4%)
 Active / Total Size (% used)       : -196427.88K / 35872.14K (-547.6%)
 Minimum / Average / Maximum Object : 0.02K / 0.00K / 128.00K

 OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
4805590 4507678  93%    0.72K 961118        5   3844472K ext2_inode_cache
2863088 2810478  98%    0.23K 178943       16    715772K dentry_cache

$>
 cat /proc/slabinfo 실행 결과  inod cache를 많이 사용하는걸로 보임
...
ext2_inode_cache  4507680 4805590    736    5    1 : tunables   54   27    8 : slabdata 961118 961118      0
...
dentry_cache      2810526 2863088    240   16    1 : tunables  120   60    8 : slabdata 178943 178943      0

3. 조치 해본것 
참조 구글링 : 
http://linux-mm.org/Drop_Caches
To free pagecache:
#echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes: 
# echo 2 > /proc/sys/vm/drop_caches
-> 수행결과 메모리 다소 상승 됨 , 서버 문제없음

To free pagecache, dentries and inodes: 
#echo 3 > /proc/sys/vm/drop_caches
-> 수행결과 서버 hang 발생했음 ~.~
  (https://bugzilla.redhat.com/show_bug.cgi?id=449381

-> 결론적으로 운영중인 시스템에 drop_caches 조정은 위험해~~~
* 캐쉬를 단기간에 제거할려면 일정잡고 재부팅이 최선일수도 .... or vm.vfs_cache_pressure  설정값을 크게 변경

* 조치 안해도 계속두면 시스템이 알아서 cached쪽이 늘어남(vm.vfs_cache_pressure 설정에 따라 그런것 같음)

'Linux' 카테고리의 다른 글

tar, gzip, split  (0) 2012.04.04
vi 키맵핑 차이점  (0) 2012.03.21
Ubuntu 에 SunJDK(java-6-sun) 설치  (0) 2012.03.02
우분투 putty에서 연결시 한글 입력이 안될때  (0) 2012.02.29
Samba Tunneling 삼바 터널링  (0) 2012.02.27