• 리눅스 OS 서버에서 현재 사용 중인 메모리 사용량을 확인하고 캐시 메모리 사용량이 많은 경우 이를 비워서 시스템 효율을 높임
  • /proc/sys/vm/drop을 비움으로써 buff/cache 메모리 항목이 비워지게 됨
  • 캐시는 느린 장치의 데이터를 빠른 장치에 임시 보관해두고 사용함으로써 성능을 높이는 것이 목적 → HIT(적중률)가 낮은 경우엔 캐시를 사용하는 것이 부정적인 영향을 미침
  • 대량의 파일이 관리되는 서버의 파일 cache hit가 낮은데 비해 buffer / cache 메모리 사용량이 높을 경우 해당 cache 기능을 끄거나 주기적으로 비움으로써 성능을 개선 가능
  • 서비스 운영 환경에서는 drop_caches를 하는 것은 위험
  • 기본적으로 memory reclame을 하여 여유 메모리 확보하므로 테스트 등 특별한 경우에만 사용하면됨


/proc/sys/vm/drop_caches에 숫자를 추가하여 리눅스 캐시 메모리 관리

1. pagecache 해제 명령어 (echo 1 > /proc/sys/vm/drop_caches)

$ free -m
              total       used       free     shared    buffers     cached
 Mem:          1999       1983         15        392         90       1490
 -/+ buffers/cache:        402       1596
 Swap:         2047          5       2042

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

 $ free -m
             total       used       free     shared    buffers     cached
 Mem:          1999        956       1042        392          8        539
 -/+ buffers/cache:        408       1590
 Swap:         2047          5       2042

2. dentry 및 inode 캐시메모리 해제 명령어 (echo 2 > /proc/sys/vm/drop_caches)

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

3. pagecache, dentry, inode 캐시메모리 모두 해제 명령어 (echo 3 > /proc/sys/vm/drop_caches)

$ free -m
             total       used       free     shared    buffers     cached
 Mem:          1999       1011        987        392         36        609
 -/+ buffers/cache:        365       1633
 Swap:         2047          5       2042

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

 $ free -m
             total       used       free     shared    buffers     cached
 Mem:          1999        875       1123        392         11        511
 -/+ buffers/cache:        352       1646
 Swap:         2047          5       2042



크론탭(crontab)을 사용하여 시스템이 주기적으로 메모리 관리

$ crontab -e 
 # 크론탭 편집 모드에서 아래와 같이 입력
 # 매일 새벽 3시에 시스템이 자동으로 전체 캐시 메모리를 비우는 명령
0 3 * * * sync && echo 3 > /proc/sys/vm/drop_caches



리눅스 캐시 메모리와 연결돤 용어 정리

1. pagecache

  • 리눅스 파일 I/O의 성능 향상을 위해 페이지 캐시라는 메모리 영역을 만들어 사용
  • 상대적으로 느린 디스크로의 접근을 최대한 피하기 위해서 사용하는 영역
  • 파일의 내용을 페이지 캐시 영역에 저장시켰다가 다시 한번 동일한 파일 접근이 일어나면 디스크에서 읽지 않고 페이지 캐시에서 읽어서 제공해 주는 방식
  • pachecache 확인 테스트

    1. 파일을 읽기 전의 메모리 양을 free로 확인 → cached 영역이 78516 KB 확인

    2. 24 KB 정도 되는 파일을 cat 명령어로 읽은 후 메모리 양을 확인 → 24KB 만큼 cached 영역이 늘어남을 확인 가능


2. dentry

  • directory entry의 줄임말로 /usr/share 같은 경로에서 usr과 share를 지칭.
  • Dentry는 해당 디렉토리가 포함하고 있는 디렉토리와 파일정보를 보유하고 있음
  • dentry는 경로명 탐색을 위한 캐시 역할도 수행한다고 알려져 있음
  • 빠른 데이터 접근을 위해 Slab의 자료구조에 추가되어 사용

3. inode

  • 모든 파일이나 디렉토리에는 1개의 inode를 가지고있음(1개의 inode는 64byte로 이루어짐)
  • 각 inode에는 파일의 소유권, 허가권, 파일 종류 등의 정보, 파일의 실제 데이터가 어디에 있는지 위치(=주소) 보유
  • inode가 모여있는 공간이 inode 블록 → (전체 디스크의 1%정도를 차지)
  • 빠른 데이터 접근을 위해 Slab의 자료구조에 추가되어 사용
  • inode 확인 명령어 ( ls- il )

+ Recent posts