| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- monitoring
- mysql
- 동시성제어
- helm
- CloudNative
- jvm
- Kubernetes
- 트랜잭션
- 데이터베이스
- 성능 최적화
- SpringBoot
- JPA
- prometheus
- kafka
- spring boot
- selector
- 성능최적화
- webflux
- 백엔드개발
- DevOps
- grafana
- docker
- Kotlin
- RDBMS
- GitOps
- redis
- netty
- NIO
- 백엔드
- Java
- Today
- Total
유성
Linux Page Cache와 Linux OS의 메모리 사용 전략 본문
Linux는 어떤식으로 Page Cache를 활용하는가?
Page Cache는 파일 기반 I/O를 통해 디스크에서 읽어온 거의 모든 파일 데이터를 캐싱한다.
단순히 사용자가 열어본것을 포함해서, 커널을 통해 파일이 오픈 된 경우도 Page Cache에 포함된다.
쉽게 말해서 MySQL 에서 select * from user where user_id = 1; 을 실행한 경우
MySQL은 내부 파일을 오픈해서 값을 찾고 이 과정에서 Linux 에서 Page Cache가 추가된다.
동작을 보면 훨신 쉽다.
1. 캐시가 없는 경우
MySQL -> read() 시스템 콜 -> Linux Kernel(디스크 읽기) -> Page Cache 적재 -> MySQL
2. 캐시가 있는 경우
MySQL -> read() 시스템 콜 -> Page Cache 읽기 -> MySQL
캐시가 있는 경우 디스크의 읽기 작업을 수행하지 않는다.
물론 이 과정과는 별개로, MySQL InnoDB는 자체적으로 Buffer Pool을 통해 논리적 페이지 캐시를 별도로 운용한다.
Page Cache는 어디까지나 OS 레벨의 물리 파일 캐시다.
이렇게 파일에 대한 접근이 없이 데이터 읽기가 가능한 구조를 띈다.
Linux의 buff/cache 적극적 활용
$ free -h
total used free shared buff/cache available
Mem: 15Gi 7.0Gi 1.2Gi 44Mi 7.5Gi 8.4Gi
Swap: 4.0Gi 1.0Mi 4.0Gi
현재 서버에서 사용중인 메모리는 7Gi 인데 불구하고, 남아있는 공간은 1.2Gi 이다.
buff/cache 가 상당히 많은 데이터를 들고 있는 것이고 이중 대부분은 Page Cache이다.
그리고 available은 왜 8.4Gi 가 되는지 물어보는 분들이 많이 있는데, 이 buff/cache는 임시 공간으로 만약
사용하려는 메모리가 높아져 free(비어있는) 메모리가 부족해지면, 커널은 buff/cache 영역의 페이지를 즉시 reclaim(회수) 하여 사용자 메모리로 재할당한다.
그렇기에 available에 buff/cache가 포함되었다고 보면 된다.
쉽게 표현하면 아래와 같다.
- used : 이미 써서 다른 데 못 쓰는 지출된 현금
- free : 지금 손에 들고 있는 완전한 현금
- buff/cache : 언제든지 인출해서 쓸 수 있는 은행 예치금
- available : 실제로 내가 지금 당장 쓸 수 있는 총 자산 (free + buff/cache)
이렇게 Linux는 캐시를 적극적으로 활용하는 이유는 속도 때문이다.
'DevOps' 카테고리의 다른 글
| 정답 없는 CI/CD, 우리 환경에 맞는 최적의 파이프라인 설계 (0) | 2026.01.23 |
|---|---|
| Kubernetes에서 MySQL 마스터-슬레이브(Replication) 구축하기 (0) | 2026.01.21 |
| 랜섬웨어 공격 경험 기록: Docker 설정이 만든 보안 구멍 (1) | 2025.08.21 |
| ELK 스택으로 실시간 로그 수집 및 분석하기: Logback, Filebeat, Elasticsearch, Kibana Quick Starter (1) | 2024.08.18 |
| Grafana로 실시간 서비스 모니터링: Actuator와 Prometheus Quick Starter (0) | 2024.08.15 |