파일시스템 성능 분석

파일 시스템에 따른 성능 차이?

XFS, EXT4의 경우 성능 차이가 크지 않음

  • 다양한 워크로드에 이미 최적화

  • 일반적이지 않은 I/O 바운드 워크로드를 제외하고는, 파일시스템이 파일I/O 성능 관련한 지배적 인 요소는 아닌 경우가 많음

페이지 캐시

  • 디스크 입출력을 최소화하기 위해 디스크 접근이 필요한 데이터를 물리 메모리에 저장

  • 페이지 캐시의 크기는 동적으로 변함

  • 페이지에 읽으려는 데이터가 있는 경우 → 캐시 히트 / 없는 경우 → 캐시 미스

→ 캐시 히트 비율에 따라 성능 크게 영향

버퍼 (쓰기 성능 개선)

  • 지연 쓰기 (비동기 쓰기)

  • 쓰기 동작은 페이지 캐시에 수행하고 즉시 디스크에 내용을 갱신하지 않음

  • 주기적으로 더티 페이지를 디스크에 저장 → pdflush 데몬

  • Buffer Cache가 따로 존재하지 않음

동기적인 쓰기 동작

  • 동기적인 쓰기 요청

  • fsync (int fd)

  • 특정 파일에 대한 모든 지연된 쓰기 버퍼 내용을 동기적으로 디스크에 저장

  • 파일 오픈 시 동기화 옵션 사용

  • O_Sync 모드 : write 요청 + fsync 요청

  • O_DIRECT : 버퍼 캐시를 사용하지 않고 바로 디스크에 쓰기 수행

굳이 페이지 캐실르 사용하지 않는 이유?

  • DB는 성능 및 안정성을 보장하기 위해 자체 메모리 관리 기능을 구현하고 있음, 자체 메모리 관리 기능을 구현하고 있음

  • 더티 페이지가 일정 비율 도달 시 vm.dirty_ratio 로 지정 가능

  • 모든 쓰기 요청 중기

  • 동기적으로 쓰기 페이지 flush 작업이 진행 → 쓰기 성능 급격히 저하 발생

정리

파일시스템에 따른 성능

EXT4 / XFS 일반적인 워크로드에서는 크게 차이가 나지 않음

I/O 동작이 중요한 워크로드 (예 : 데이터베이스 서버)는 파일시스템 종류 + 커널 버전 확인

캐시를 최대한 활용하여 디스크 접근을 최소화

페이지 캐시 → 읽기 성능 개선

  • 캐시 hit 비율에 따라 성능 영향

버퍼 캐시 → 쓰기 성능 개선

  • 지연 쓰기

  • 동기적 쓰기도 가능 (fsync, O_SYNC, O_DIRECT,,,)

  • 쓰기 요청이 급격히 증가할 경우, 동기적으로 쓰기 작업이 이뤄질 수 있음 (시스템 성능 저하)

Last updated