본문 바로가기

리눅스

디스크 I/O 성능 테스트(iops)

반응형

디스크 I/O 성능 테스트(iops)

fio 설치

Ubuntu

sudo apt-get update
sudo apt-get install -y fio

Amazon Linux 2

sudo yum install -y fio

fio 명령어 기본 구문

fio를 사용하려면 테스트를 정의하는 설정 파일을 작성해야 합니다. 설정 파일은 JSON 또는 INI 형식으로 작성할 수 있습니다.

 

주요 옵션

  • filename: 테스트할 파일의 경로와 이름을 지정합니다.
  • size: 테스트 파일의 크기를 지정합니다.
  • bs: 블록 크기를 지정합니다.
  • iodepth: 동시에 실행할 I/O 요청의 깊이를 지정합니다.
  • numjobs: 병렬 작업 수를 지정합니다.
  • rw: 읽기 및 쓰기 작업의 비율을 지정합니다.
  • direct: 직접 I/O를 사용할지 여부를 지정합니다.

블록 사이트 확인

ex4

tune2fs -l /dev/nvme0n1p1 | grep -i 'block size'
$ tune2fs -l /dev/nvme0n1p1 | grep -i 'block size'
Block size:               4096

xfs

xfs_info /dev/nvme0n1p1
$ xfs_info /dev/nvme0n1p1
meta-data=/dev/nvme0n1p1         isize=512    agcount=11, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=5242363, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
728x90

사용 예시

fio 설정 파일 작성

  • 이 파일은 4KB 크기의 랜덤 읽기 작업을 수행합니다.
sudo vim test.fio
[global]
name=my_test

[read]
filename=/path/to/testfile
size=1G
blocksize=4k
ioengine=libaio
iodepth=16
direct=1
rw=randread

fio 실행

  • fio를 실행합니다.
fio test.fio

fio는 설정 파일을 읽고 테스트를 수행한 다음 결과를 표시합니다.

 

결과 분석

fio 실행 후에 나타나는 결과에는 디스크 대역폭과 IOPS에 대한 정보가 포함됩니다. 주요 결과 중 일부는 다음과 같습니다.

  • read: 읽은 데이터 양과 대역폭.
  • write: 쓴 데이터 양과 대역폭.
  • iops: 읽기 및 쓰기 작업당 IOPS.

fio 테스트

Random read/write performance(랜덤 읽기/쓰기 성능)

fio --name=test --directory=/tmp --filename=random_read_write.fio \
 --gtod_reduce=1 --randrepeat=1 --ioengine=libaio  --direct=1 \
 --rw=randread --bs=4k --iodepth=64 --size=1G --numjobs=2 \
 --time_based --runtime=180 --norandommap --readwrite=randrw --rwmixread=75

fio 명령의 옵션

  • --name=test: 테스트의 이름을 "test"로 설정합니다.
  • --directory=/tmp: 테스트를 수행할 디렉토리를 /tmp로 설정합니다.
  • --filename=random_read_write.fio: 테스트 파일의 이름을 "random_read_write.fio"로 설정합니다.
  • --gtod_reduce=1: 기본 타임스탬프 오버헤드를 줄이기 위한 옵션입니다.
  • --randrepeat=1: 랜덤 데이터 반복 사용을 1로 설정하여 재생산 가능한 결과를 얻을 수 있습니다.
  • --ioengine=libaio: I/O 엔진을 libaio로 설정합니다.
  • --direct=1: 직접 I/O를 사용하도록 설정합니다.
  • --rw=randread: 테스트에서 수행할 읽기 작업의 패턴을 무작위 읽기(randread)로 설정합니다.
  • --bs=4k: 블록 크기를 4KB로 설정합니다.
  • --iodepth=64: 동시에 실행할 I/O 요청의 깊이를 64로 설정합니다.
  • --size=1G: 테스트 파일의 크기를 1GB로 설정합니다.
  • --numjobs=2: 병렬 작업 수를 2로 설정합니다.
  • --time_based: 테스트 시간을 기반으로 수행하도록 설정합니다.
  • --runtime=180: 테스트의 실행 시간을 180초로 설정합니다.
  • --norandommap: 랜덤 데이터 맵을 사용하지 않도록 설정합니다.
  • --readwrite=randrw: 테스트에서 수행할 읽기 및 쓰기 작업의 패턴을 무작위 읽기 및 쓰기(randrw)로 설정합니다.
  • --rwmixread=75: 읽기와 쓰기 작업의 밸런스를 75% 읽기로 설정합니다.

 

이 명령은 주어진 옵션으로 디스크에서 무작위 읽기 및 쓰기 작업을 1GB 크기의 파일에 180초 동안 2개의 작업 스레드로 실행합니다. 결과는 디스크의 IOPS 및 대역폭에 대한 정보를 제공할 것입니다.

 

반응형