티스토리 뷰
■ 페이지 캐시
페이지 캐시는 리눅스(VFS 계층) 에서는 디스크 접근을 최소화 하여 파일 I/O성능을 향상시키기 위해 사용되는 메모리 영역입니다.
한 번 읽은 파일의 내용을 이 페이지 캐시 영역에 저장하고, 같은 파일의 접근이 일어나면 디스크에서 읽어오는 것이 아니라 페이지 캐시에서 읽어오게 됩니다.
리눅스에서 파일을 여는 과정 중 find_get_page() 메소드를 통해 해당 영역이 페이지 캐시에 있는지 확인하고 만약 있다면 디스크까지 접근하지 않게 됩니다. 만약 해당 영역이 페이지 캐시 내에 없다면 _page_cache_alloc() 메소드를 통해 해당 파일의 내용을 저장할 페이지 캐시 영역을 할당하고, bio 구조체를 통해 할당받은 페이지 캐시를 추가 합니다.
■ 버퍼 캐시
버퍼 캐시는 블록 디바이스가 가지고 있는 블록 자체에 대한 캐시 입니다.
커널이 데이터를 읽기 위해서는 블록 디바이스의 특정 블록에 접근해야 하는데, 이 때 해당 블록의 내용을 버퍼캐시에 담아두고 동일한 블록에 접근할시에 버퍼 캐시에서 읽어오게 됩니다.
■ 버퍼 캐시 in 페이지 캐시
버퍼캐시와 페이지캐시가 함께 있어서 하나의 영역이 두 캐시에 같이 존재하게 되는 이중 캐시 문제가 발생하는 경우가 많았는데, 리눅스 2.4버전 이후부터는 페이지 캐시가 버퍼 캐시 내에 포함되도록 바뀌었습니다.
또, 버퍼 캐시와 페이지 캐시는 말 그대로 캐시이기 때문에 프로세스에게 할당할 메모리가 부족할 시에 자동으로 반환됩니다.
'기타 스터디 > Linux' 카테고리의 다른 글
linux MySQL을 putty로 다루며 배우게 된 것들 (400) | 2016.02.10 |
---|
댓글