Page cache와 buffer cache의 차이

리눅스 기반의 시스템에서 메모리 여유공간 및 사용량을 확인할 때 free 라는 명령어를 사용한다.
free 명령어의 출력을 확인해보면 buffers 와 cached 항목을 확인할 수 있다.

여기서 buffers는 buffer cache를 의미하고 cached는 page cache를 의미한다.
구체적인 정의는 다음과 같다.

  • buffer cache : 파일시스템의 메타데이터와 관련된 블록들을 저장하고 있는 캐시
  • page cache : 파일의 내용을 저장하고 있는 캐시

초기 buffer cache는 블록 디바이스 레벨에서의 블록들을 캐싱하였다. 그에 따라, 초기 리눅스에서는 buffer cache에 캐싱된 블록들의 내용이 page cache에도 캐싱되는 이중 캐싱 문제가 발생하였다. 이러한 문제는 커널 2.4 버전 이후부터 page cache에 buffer cache가 통합되면서 해결되었다. 결과적으로 buffer cache의 역할을 축소되었지만, 현재 super block 또는 inode block 즉, 메타데이터에 대한 정보를 캐싱하는 역할로 사용되어지고 있다.


Comments: