CHAPTER03 - OS 캐시와 분산
2022. 11. 11. 18:08
강의 8 OS의 캐시 구조
- OS에는 디스크 내의 데이터를 빠르게 액세스할 수 있도록 하는 구조가 갖춰져 있다.
- 이게 캐시다
- Linux의 경우 페이지 캐시라고 하는데 페이지가 무엇인지 알아보자
- 물리적인 하드웨어를 OS에서 추상화하기 위해 가상 메모리 구조가 존재한다.
- 프로세스에서 메모리를 다루기 쉽게 하는 이점을 제공한다 (주소가 0x000부터 시작한다)
- OS가 커널 내에서 메모리를 추상화하고 있다.
- 페이지 : OS가 물리 메모리를 확보/관리하는 단위
- 페이지는 가상 메모리의 최소단위
- Linux의 페이지 캐시 원리
- 디스크의 내용을 일단 메모리에 읽어들임
- 작성된 페이지는 파기되지 않고 남음 (페이지 캐시)
- 예외의 경우를 제외하고 모든 I/O에 투과적으로 작용됨 (디스크의 캐시를 담당하는 곳, VFS)
- VFS(Virtual File System)
- 디스크를 조작하는 디바이스 드라이버와 OS 사이에 끼어있는 파일 시스템
- 어떤 디스크를 읽더라도 동일한 구조로 캐싱된다.
- 리눅스에서는 sar, 윈도우에서는 perfmon으로 os 지표 확인 가능
강의 9 I/O 부하를 줄이는 방법
- 캐시를 전제로 한 I/O 줄이는 방법
- 앞선 강의에서 언급했듯, 캐시를 전제로 I/O를 줄이기 위한 대책을 세워가는 것이 유효하다.
- 데이터 규모에 비해 물리 메모리가 크면 전부 캐싱할 수 있다.
- 경제적 비용과의 밸런스를 고려해야 한다.
- 캐시로 해결될 수 없는 규모면 복수 서버로 확장을 시켜야 한다.
- AP 서버를 늘리면 CPU 부하를 낮출 수 있다.
- DB 서버를 늘려야 할 떄는 반드시 부하 떄문만은 아니고 오히려 캐시 용량을 늘리고자 할 때 혹은 효율을 높이고자 할 때인 경우가 많다.
- 그러나 단순히 대수를 늘리는 것은 효과가 없다.
- 캐싱할 수 없는 비율은 변함없이 그대로이기 때문
강의 10 국소성을 살리는 분산
- 국소성을 고려한 분산이란?
- 액세스 패턴을 고려한 분산이다.
- 액세스 패턴에 따라 저장하는 서버가 달라진다.
- 캐싱할 수 없는 부분이 사라진다.
- 액세스 패턴을 고려한 분산이다.
- 파티셔닝
- 한 대였던 DB 서버를 여러 대의 서버로 분할하는 방법
- 가장 간단한 것은 테이블 단위 분할
- 용도별로 시스템을 '섬'으로 나눈다.
- 요청 패턴을 '섬'으로 분할
- 요청 URL을 보고 섬을 나눈다 (섬1, 섬2, 섬3 ....)
- 어떻게 요청이 왔느냐에 따라 접근할 수 있는 방식을 달리 하는 것
- 의외로 봇 엑세스가 많다.
- 페이지 캐시를 고려한 운용의 기본 규칙
- OS 기동 직후에 서버를 투입하지 않는다.
- 자주 사용하는 DB 파일을 cat 해준뒤 로드밸런서에 편입시킨다.
- 성능 평가는 캐시가 최적화되었을때 진행한다.
- OS 기동 직후에 서버를 투입하지 않는다.
- 부하 분산 이해를 위한 OS 지식
- OS 캐시
- 멀티스레드나 멀티프로세스
- 가상 메모리 구조
- 파일시스템
'책 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
CHAPTER07 - 알고리즘 실용화, 가까운 예로 보는 이론,연구의 실전 투입 (0) | 2022.11.16 |
---|---|
CHAPTER05 - 대규모 데이터 처리 실전 입문 - 애플리케이션 개발의 급소 (0) | 2022.11.15 |
CHAPTER04 - 분산을 고려한 MySQL 운용 (0) | 2022.11.14 |
CHAPTER02 - 메모리와 디스크, 웹 애플리케이션과 부하 (0) | 2022.11.10 |