2010년 12월 26일 일요일

OS 레벨의 캐시 및 버퍼링



O/S 레벨의 캐시 및 버퍼링
  • 모든 O/S는 Application과 Hardware 중간에서 버퍼링 작업을 수행함
  • Linux에서도 동일하게 InnoDB 엔진에서 파일을 기록하거나 읽는 도중 O/S 레벨의 버퍼링 또는 캐시 처리를 함
  • O/S의 캐시나 버퍼링도 시스템 메모리를 사용함
  • InnoDB의 경우, 읽어들이는 모든 페이지들에 대해서 O/S보다 지능화된 버퍼링을 수행함
  • O/S에서도 캐시를 하고 InnoDB Buffer pool에서도 캐시가 되는 경우 이중으로 버퍼링 됨 (Double buffering)
  • O/S 캐시의 장점
    - Write cache가 없는 경우 빠른 Flush 처리가 가능
  • O/S 캐시의 단점
    - Double buffering으로 인한 물리적 메모리 소비 -> DB장비의 경우 꽤 많은 공간을 점유하는 듯 보임
  • 결론적으로 RAID 컨트롤러에 Write cache가 붙어있고, 그 Write cache가 Battery backed unit(BBU)이 있으면
    빠른 Flush 처리와 함께 데이터 손실을 막을 수 있음
  • 이 경우에는 O/S의 Cache/Buffering을 피하고 Direct I/O를 할 수 있도록 설정함이 좋음 
  • innodb_flush_method=O_DIRECT 설정으로 InnoDB 엔진에서 발생하는 모든 I/O 작업을
    Direct I/O (O/S의 Cache/Buffer를 거치지 않는)를 유도할 수 있음

댓글 없음:

댓글 쓰기