파일시스템 성능 분석
파일 시스템에 따른 성능 차이?
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