본문 바로가기

리눅스

디스크 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 및 대역폭에 대한 정보를 제공할 것입니다.

 

728x90
반응형