티스토리 뷰

페이지 캐시

페이지 캐시는 리눅스(VFS 계층) 에서는 디스크 접근을 최소화 하여 파일 I/O성능을 향상시키기 위해 사용되는 메모리 영역입니다.

한 번 읽은 파일의 내용을 이 페이지 캐시 영역에 저장하고, 같은 파일의 접근이 일어나면 디스크에서 읽어오는 것이 아니라 페이지 캐시에서 읽어오게 됩니다.

리눅스에서 파일을 여는 과정 중 find_get_page() 메소드를 통해 해당 영역이 페이지 캐시에 있는지 확인하고 만약 있다면 디스크까지 접근하지 않게 됩니다. 만약 해당 영역이 페이지 캐시 내에 없다면 _page_cache_alloc() 메소드를 통해 해당 파일의 내용을 저장할 페이지 캐시 영역을 할당하고, bio 구조체를 통해 할당받은 페이지 캐시를 추가 합니다.


버퍼 캐시

버퍼 캐시는 블록 디바이스가 가지고 있는 블록 자체에 대한 캐시 입니다.

커널이 데이터를 읽기 위해서는 블록 디바이스의 특정 블록에 접근해야 하는데, 이 때 해당 블록의 내용을 버퍼캐시에 담아두고 동일한 블록에 접근할시에 버퍼 캐시에서 읽어오게 됩니다.


버퍼 캐시 in 페이지 캐시

버퍼캐시와 페이지캐시가 함께 있어서 하나의 영역이 두 캐시에 같이 존재하게 되는 이중 캐시 문제가 발생하는 경우가 많았는데, 리눅스 2.4버전 이후부터는 페이지 캐시가 버퍼 캐시 내에 포함되도록 바뀌었습니다.

또, 버퍼 캐시와 페이지 캐시는 말 그대로 캐시이기 때문에 프로세스에게 할당할 메모리가 부족할 시에 자동으로 반환됩니다.



'기타 스터디 > Linux' 카테고리의 다른 글

linux MySQL을 putty로 다루며 배우게 된 것들  (400) 2016.02.10
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
29 30 31
글 보관함