개요
FIO(Flexible I/O Tester)는 Linux I/O 하위 시스템과 스케줄러를 테스트하기 위해 Jens Axboe가 개발한 오픈 소스 도구입니다. 사용자가 지정한 특정 I/O 워크로드를 시뮬레이션하여 스토리지 장치, 파일 시스템, I/O 하위 시스템의 성능을 벤치마킹할 수 있습니다.
동작 구조
FIO는 작업 파일(job file)을 통해 I/O 워크로드를 정의합니다. 작업 파일은 INI 형식으로, 전역 설정 섹션과 개별 작업 섹션으로 구성됩니다. FIO는 스레드 또는 프로세스를 생성하여 각 작업을 독립적으로 실행하며, 설정된 I/O 패턴에 따라 동시에 다중 I/O 작업을 처리합니다.
핵심 구성 요소
I/O 엔진: FIO는 libaio, io_uring, psync, mmap, sync 등 다양한 I/O 인터페이스를 지원합니다. 각 엔진은 운영 체제 또는 특정 하드웨어 API를 통해 I/O를 전달합니다. 워크로드 정의: 순차/무작위 읽기/쓰기, 혼합 작업, 지정된 I/O 깊이, 블록 크기, 대역폭 제한 등을 설정할 수 있습니다. 성능 수집: IOPS, 대역폭(BW), 지연시간(latency) 백분위수를 실시간으로 측정하고 상세 통계를 제공합니다.