대규모 서비스를 지탱하는 기술, 8강 OS의 캐시 구조 요약
OS 캐시 구조 알고 애플리케이션 작성하기
- OS 의 캐시 구조를 이해하고 디스크 액세스를 최소화하면 프로그램을 빠르게 만들 수 있다
- 디스크와 메모리 간 속도 차는 10^5 에서 10^6 배 이상이다
- 캐시 구조를 이해하면 최대한 메모리에 올릴 수 있다
- 메모리를 이용해 디스크 액세스를 줄일 수 있다. (OS 캐시)
가상 메모리
- 논리적인 선형 주소를 물리적인 물리 주소로 변환하는 것이다
- 프로세스는 가상 메모리의 물리 주소를 통해 메모리에 접근한다
- 프로세스는 특정 번지부터 시작한다는 식의 상대 주소로 메모리에 접근한다
- OS 는 커널 내에서 메모리를 추상화하고 이것을 가상 메모리라고 한다
- OS 는 메모리를 1 바이트씩 액세스하는 것이 아니라 4바이트 정도와 가팅 특정 크기 만큼을 블록으로 확보해서 프로세스로 넘긴다
- 이를 4바이트와 같이 OS 에서 블록으로 쓰이는 기본 크기의 단위를 페이지라 한다
페이지 캐시 원리
- 메모리에 여유가 있다면 한번 할당한 메모리를 해제하지 않고 남겨둔다
- 다른 프로그램에서 동일한 메모리에 접근한다면 매우 빠르게 접근할 수 있게 된다
- OS 를 계속 가동시켜두면 메모리에 여유가 있는 만큼 캐싱이 되어 점점 빨라진다
VFS
- VFS 는 파일 시스템 인터페이스를 통일하는 역할을 하는 추상화 레이어이다.
리눅스는 페이지 단위로 디스크를 캐시한다
- 리눅스는 4KB 단위로 파일의 특정 부분을 캐시하기 때문에 아무리 큰 파일이어도 캐시가 가능하다
- 4KB 는 페이지로 가상메모리의 최소 단위이다
LRU
- LRU 는 Least Recently Used 라는 뜻으로 메모리에 여유 공간이 사라지면 가장 오래된 캐시부터 지워서 메모리를 확보한다
- OS 내부엔 Radix Tree 가 있어서 파일이 아무리 커지더라도 캐시 탐색 속도가 느려지지 않는다
- OS 의 메모리 사용량이 높더라도 캐시가 되고 있는 것일 뿐이므로 걱정할 필요 없다
- OS 는 최대한 캐시에 많은 것을 올리려 한다
메모리 늘려서 I/O 부하 줄이기
- 메모리를 늘려서 I/O 부하를 줄이는 것은 데이터가 많아졌을 때의 기본 방침이다
반응형
'인프라 > 대규모 서비스를 지탱하는 기술' 카테고리의 다른 글
대규모 서비스를 지탱하는 기술, 9강 IO 부하를 줄이는 방법 요약 (0) | 2023.06.23 |
---|---|
대규모 서비스를 지탱하는 기술, 7강 대규모 데이터를 다루기 위한 기초 지식 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 6강 규모 조정의 요소 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 5강 대규모 데이터 처리의 어려운 점 요약 (0) | 2023.06.23 |
대규모 서비스를 지탱하는 기술, 4강 대규모 데이터란 요약 (0) | 2023.06.23 |