Fio는 다목적 IO 워크로드 생성기인 Flexible IO의 약자입니다. 2005년에 Linux 커널의 백본이자 IO 스택 작성자인 Jens Axboe는 Linux IO 하위 시스템의 변경 사항을 벤치마킹하거나 확인하기 위해 지속적으로 일회성 테스트 프로그램을 작성하는 데 지쳤습니다. 그 결과 작업을 훨씬 쉽게 하기 위해 fio가 탄생했습니다. 세부적인 워크로드 설정을 허용할 만큼 충분히 유연했으며 완료 시 데이터를 이해하는 데 필요한 보고 기능이 포함되어 있습니다. Jens는 Oracle과 나중에 Fusion-io에 합류하면서 fio에 대한 작업을 계속했습니다.
Fio는 다목적 IO 워크로드 생성기인 Flexible IO의 약자입니다. 2005년에 Linux 커널의 백본이자 IO 스택 작성자인 Jens Axboe는 Linux IO 하위 시스템의 변경 사항을 벤치마킹하거나 확인하기 위해 지속적으로 일회성 테스트 프로그램을 작성하는 데 지쳤습니다. 그 결과 작업을 훨씬 쉽게 하기 위해 fio가 탄생했습니다. 세부적인 워크로드 설정을 허용할 만큼 충분히 유연했으며 완료 시 데이터를 이해하는 데 필요한 보고 기능이 포함되어 있습니다. Jens는 Oracle과 나중에 Fusion-io에 합류하면서 fio에 대한 작업을 계속했습니다. 현재 fio 사용자 커뮤니티는 활발히 활동하고 개발에 참여하고 있으며, 결과적으로 fio를 지속적으로 개발하고 새로운 기능을 구현합니다. 100명이 넘는 사람들이 fio에 기여했으며 많은 사람들이 여러 번 기여했습니다. 이러한 노력 덕분에 fio의 새 버전은 약 4-6주마다 릴리스되며 fio는 산업 표준 벤치마크, 스트레스 테스트 도구 및 IO 검증 목적으로 널리 사용됩니다.
주요 기능 세트 및 기능
좋은 벤치마크의 두 가지 주요 기능은 원하는 워크로드를 실행할 수 있고 원하는 출력 단위를 얻을 수 있다는 것입니다. 유연성은 fio의 주요 초점이었습니다. 엄격하게 상세한 IO 통계와 함께 다른 벤치마크에서는 찾을 수 없는 워크로드 옵션을 지원합니다. 모든 종류의 임의 및 순차 IO 혼합 또는 읽기/쓰기 혼합은 쉽게 정의할 수 있습니다. fio의 내부 디자인도 유연합니다. 워크로드 정의는 IO 엔진과 완전히 별개입니다(FIO가 IO가 커널에 전달되는 방식을 나타내는 데 사용하는 용어). 예를 들어 Linux에서 네이티브 비동기로 워크로드를 실행한 다음 Windows에서 동일한 워크로드를 비교하려는 경우 단일 IO 엔진 라인을 Windows의 네이티브 버전으로 변경하기만 하면 됩니다. 또는 분포의 끝에서 더 자세한 대기 시간 백분위수 통계를 원하는 경우에도 쉽습니다. 관심 있는 정확한 백분위수를 지정하면 fio가 이를 추적합니다.
처음에는 Linux에서 개발되었지만 OS별 기능에 연결되지 않은 fio의 영역은 Windows에서 HP-UX, Android에 이르는 모든 플랫폼에서 작동합니다. Linux, Windows, Solaris 등에 기본 IO 엔진도 있습니다. 이는 서로 다른 운영 환경에서 동일한 워크로드를 실행할 수 있기를 원하는 혼합 환경의 핵심 기능입니다. 또한 fio는 일반적으로 대상 시스템에서 직접 실행되지만 네트워크 연결도 지원합니다. 대상 컴퓨터에서 서버 백엔드를 실행하고 클라이언트 컴퓨터에서 데이터 수집 프런트엔드를 실행할 수 있습니다. 이렇게 하면 특히 fio가 여러 시스템에서 자주 사용되는 경우 관리하기가 더 쉬워집니다.
Fio는 주로 텍스트 기반 CLI 애플리케이션이지만 교차 플랫폼 gtk 기반 GUI 프런트엔드(gfio)에 대한 초기 지원이 있습니다. 이 게시 시점에 gfio는 최신 fio 릴리스인 v2.1에 포함되어 있으며 상당히 안정적입니다. CLI 클라이언트가 지원하는 모든 워크로드에 대한 GUI 프런트엔드 역할을 할 수 있습니다. 또한 GUI 편집 작업 옵션 및 워크로드에 대한 기본 지원을 제공하지만 gfio가 진행 중인 작업이므로 전체 지원이 아직 개발 중입니다.
Fio는 또한 세 가지 유형의 출력 형식을 지원합니다. "클래식" 출력은 워크로드 종료 시 워크로드 통계를 덤프하는 기본값입니다. CSV 형식에 대한 지원도 있지만 JSON 기반 출력 형식을 선호하여 서서히 줄어들고 있습니다. 후자는 훨씬 더 유연하며 사람과 컴퓨터에 대해 간단하게 구문 분석할 수 있다는 이점이 있습니다.
Fio는 활발한 사용자 및 개발 커뮤니티의 시너지 덕분에 빠르게 발전하고 있습니다. 경쟁 프로젝트보다 실행하기 쉽고 사용자 작업을 수행할 수 있을 만큼 유연하며 모든 종류의 스토리지 시스템을 최고 속도로 구동할 수 있을 만큼 오버헤드가 낮습니다. 거기에 다른 어떤 것보다 더 풍부한 옵션과 보고 기능을 결합하면 fio는 훌륭한 도구입니다.
StorageReview.com이 FIO를 사용하는 이유
엔터프라이즈 스토리지 검토의 양과 깊이를 모두 늘리기 시작하면서 여러 운영 체제에서 다양한 스토리지 제품의 성능을 정확하게 측정하기 위한 더 나은 벤치마킹 도구가 필요했습니다. Iometer 또는 Vdbench와 같은 기존 워크로드 생성기 소프트웨어는 기본이 아닌 OS와의 제한된 호환성을 제공하거나 PCIe 애플리케이션 가속기 또는 고성능 네트워크 스토리지와 같은 고성능 스토리지 장치에 대한 로드를 확장하는 데 어려움을 겪었습니다. FIO의 구현이 시작된 이후로 이러한 많은 문제를 해결했으며 긴 테스트 기간 동안 스크립팅을 지원함으로써 한 단계 더 나아갔습니다. 이 전반적인 기능은 모든 기업 검토를 위한 합성 벤치마크를 선택합니다.
검토를 위해 FIO를 사용하여 지정된 기간 동안 스토리지 장치의 성능을 측정합니다. 대부분의 제품의 경우 기본 테스트에 들어가기 전에 6시간의 사전 조정이 포함됩니다. 테스트에 몇 시간 동안 정상 상태에 진입하지 못할 수 있는 더 큰 PCIe 스토리지 장치의 경우 기본 테스트가 시작되기 전에 두 배 더 긴 12시간 동안 사전 조건을 지정합니다. 가상 엔터프라이즈 스토리지 벤치마크 프로세스는 철저한 사전 조정 단계에서 드라이브가 수행되는 방식을 분석하는 것으로 시작됩니다. 비교 가능한 각 제품은 먼저 공급업체의 도구를 사용하여 안전하게 삭제된 다음 스레드당 16개의 대기 대기열이 있는 16개 스레드의 과도한 로드에서 장치를 테스트할 동일한 워크로드로 정상 상태로 사전 조정됩니다. 프로세스를 마무리한 다음 여러 스레드/대기열 깊이 프로필에서 설정된 간격으로 테스트하여 사용량이 적은 경우와 사용량이 많은 경우의 성능을 보여줍니다.
사전 조건화 및 기본 정상 상태 테스트:
- 처리량(읽기+쓰기 IOPS 집계)
- 평균 대기 시간(읽기+쓰기 대기 시간을 함께 평균화)
- 최대 대기 시간(최대 읽기 또는 쓰기 대기 시간)
- 대기 시간 표준 편차(함께 평균화된 읽기+쓰기 표준 편차)
Enterprise Synthetic Workload Analysis에는 일부 실제 작업을 반영하는 다양한 프로필이 포함되어 있습니다. 이러한 프로파일은 기업 하드웨어에 일반적으로 사용되는 최대 4k 읽기 및 쓰기 속도 및 8k 70/30과 같이 널리 게시된 값뿐만 아니라 과거 벤치마크와 쉽게 비교할 수 있도록 개발되었습니다.
- 4k
- 100% 읽기 또는 100% 쓰기
- 100% 만
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –이름=4k테스트
- 8k 70/30
- 70% 읽기, 30% 쓰기
- 100% 만
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –이름=8k7030테스트
현재 우리는 활용 FIO 버전 2.0.7 (x64) Linux 성능 테스트를 위한 CentOS 6.3 및 FIO 버전 2.0.12.2 (x64) Windows 성능을 위해 Windows Server 2008 R2 SP1에서.
StorageReview 엔터프라이즈 테스트 플랫폼
스토리지 솔루션은 FIO 종합 벤치마크로 테스트되었습니다. StorageReview 엔터프라이즈 테스트 랩 독립형 서버를 활용합니다. HP ProLiant DL380/DL360 Gen9를 활용하여 실제 성능을 보여주고 스토리지 어댑터 또는 네트워크 인터페이스만 변경하여 DL380/DL360을 다른 스토리지 제품에 연결합니다. DL380/DL360은 타사 장치와 뛰어난 호환성을 제공하는 것으로 입증되어 다양한 테스트 환경을 위한 탁월한 플랫폼이 되었습니다.
(1 세대) 레노버 씽크서버 RD240
- 2 x Intel Xeon X5650(2.66GHz, 12MB 캐시)
- 인텔 5500+ ICH10R 칩셋
- 메모리 – 8GB(2GB 4개) 1333Mhz DDR3 등록 RDIMM
- Windows Server 2008 Standard Edition R2 SP1 64비트 및 CentOS 6.2 64비트
- LSI 9211 SAS/SATA 6.0Gb/s HBA
(2 세대) 레노버 씽크서버 RD630
- 2 x Intel Xeon E5-2620(2.0GHz, 15MB 캐시, 6코어)
- 인텔 C602 칩셋
- 메모리 – 16GB(2GB 8개) 1333Mhz DDR3 등록 RDIMM
- Windows Server 2008 R2 SP1 64비트, Windows Server 2012 Standard, CentOS 6.3 64비트
- 100GB 마이크론 RealSSD P400e 부팅 SSD
- LSI 9207-8i SAS/SATA 6.0Gb/s HBA(SSD 또는 HDD 벤치마킹용)
(3 세대) HP 프로라이언트 DL380/DL360 Gen9
- 듀얼 Intel E5-2667 v3 CPU(3.2GHz, 8코어, 20MB 캐시)
- 256GB RAM(16GB x 16 DDR4, CPU당 128GB)
- 윈도우 서버 2012 R2, CentOS 7.0
- 400GB 부팅 SSD – Windows
- 300GB 부팅 HDD - Linux
- LSI 9300-8e SAS/SATA 12.0Gb/s HBA (SSD 또는 HDD 벤치마킹용)
- 슈퍼마이크로 슈퍼섀시 846BE1C-R1K28B SAS3 JBOD(SSD 또는 HDD 연결용)