- 리눅스 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 확인 테스트
파일을 읽기 전의 메모리 양을 free로 확인 → cached 영역이 78516 KB 확인
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 )
'OS(운영체제) > 리눅스(Linux)' 카테고리의 다른 글
CentOS iso 파일의 특정 버전과 Centos 버전의 EOL(End Of Life) (0) | 2022.07.03 |
---|---|
kickstart Centos7 ISO 파일 만들기(UEFI 사용 버전) (0) | 2022.07.03 |
Centos7 커널 업그레이드 (테스트) (0) | 2022.06.27 |
openssl 버전 업그레이드 (테스트) (0) | 2022.06.27 |
yum database is locked 문제 발생 해결 (0) | 2022.06.26 |