Computer >> 컴퓨터 >  >> 체계 >> Linux

Linux에서 디스크 성능(IOPS 및 대기 시간)을 확인하는 방법은 무엇입니까?

이 기사에서는 Linux에서 디스크 또는 스토리지 어레이의 성능을 확인하는 방법에 대해 설명합니다. IOPS (초당 입출력 작업)은 데이터 저장 시스템이 초당 수행하는 입출력 작업의 수입니다(단일 디스크, RAID 어레이 또는 외부 저장 장치의 LUN일 수 있음). 일반적으로 IOPS는 미디어에서 읽거나 미디어에 쓸 수 있는 블록 수를 나타냅니다.

대부분의 디스크 제조업체는 공칭 IOPS 값을 지정하지만 실제로는 보장되지 않습니다. 프로젝트를 시작하기 전에 스토리지 하위 시스템의 성능을 이해하려면 스토리지가 처리할 수 있는 최대 IOPS 값을 얻는 것이 좋습니다.

스토리지 벤치마킹을 위한 FIO(Flexible I/O) 도구 사용

Linux에서 디스크 IOPS 성능을 측정하려면 fio 를 사용할 수 있습니다. (이 도구는 EPEL 리포지토리의 CentOS/RHEL에 사용할 수 있습니다). 따라서 RHEL 또는 CentOS에 fio를 설치하려면 yum(dnf) 패키지 관리자를 사용하십시오.

# yum install epel-release -y
# yum install fio -y

또는 Debian 또는 Ubuntu의 apt-get:

# apt-get install fio

Linux에서 디스크 성능(IOPS 및 대기 시간)을 확인하는 방법은 무엇입니까?

그런 다음 테스트할 디스크를 식별합니다. 테스트는 디스크 또는 LUN이 마운트된 디렉토리에서 읽기/쓰기 작업을 수행하여 수행됩니다.

다양한 디스크 부하 시나리오(호스팅된 앱 로직 및 프로젝트의 일반 인프라에 따라 선택하는 테스트 모드)에서 여러 유형의 디스크 IOPS 성능 테스트를 수행해 보겠습니다.

무작위 읽기/쓰기 동작 테스트

테스트를 실행하면 8GB 파일이 생성됩니다. 그러면 fio는 4KB를 읽고 씁니다. 75/25%가 있는 블록(표준 블록 크기) 읽기 및 쓰기 작업 수를 기준으로 성능을 측정합니다. 명령은 다음과 같습니다.

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75

Linux에서 디스크 성능(IOPS 및 대기 시간)을 확인하는 방법은 무엇입니까?

두 개의 SSD로 구성된 어레이에서 첫 번째 테스트를 실행했습니다. 좋은 결과를 얻었습니다:

  • 읽기: 3280MiB/s, IOPS 평균 83000
  • 쓰기: 110MiB/s, IOPS 평균 28000

통합 읽기/쓰기 테스트를 실행했기 때문에 개별 테스트의 값이 더 높아집니다.

이에 비해 SATA에서 성능을 측정했습니다. 드라이브:

Linux에서 디스크 성능(IOPS 및 대기 시간)을 확인하는 방법은 무엇입니까?

  • 읽기: IOPS=430, BW=1.7MiB/s
  • 쓰기: IOPS=143, BW=0.6MiB/s

물론 HDD의 결과는 SSD의 결과보다 나쁩니다.

랜덤 읽기 동작 테스트

임의 읽기 작업에 대해서만 디스크 성능을 측정하려면 다음 명령을 실행하십시오.

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread

명령의 마지막 부분이 —readwrite=randread로 변경되었습니다. .

Linux에서 디스크 성능(IOPS 및 대기 시간)을 확인하는 방법은 무엇입니까?

앞서 말했듯이 개별적으로 측정하면 읽기/쓰기 성능이 더 높아집니다.

READ: IOPS=150k, BW=584MiB/s (612MB/s)

무작위 쓰기 작업 테스트

임의 쓰기 작업에 대한 디스크 성능을 측정하려면 다음 명령을 실행하십시오.

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=fiotest --bs=4k --iodepth=64 --size=8G --readwrite=randwrite

WRITE: IOPS=84.7k, BW=331MiB/s (347MB/s)

좋은 SSD의 쓰기 작업 성능도 매우 높습니다. 읽기 작업 테스트와 마찬가지로 혼합 테스트와 비교한 차이는 200-250MiB/s 및 50000IOPS에 이릅니다.

공식 제조사 문서(Intel SSD)를 참고하면 값이 사실이라고 해도 무방합니다.

Fio 구성 파일 예

Fio를 사용하면 대화식 명령과 테스트를 위해 미리 준비된 구성 파일을 사용하여 디스크 성능을 확인할 수 있습니다. 이 옵션을 사용하려면 파일을 만드십시오:

# nano read.fio

그리고 거기에 다음 내용을 추가하십시오:

[global]
rw=randread
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgread]
rw=randread
iodepth=64

그런 다음 테스트를 시작합니다.

# fio read.fio

테스트는 디스크의 읽기 성능을 측정합니다. 쓰기 성능을 테스트하려면 다음 구성 파일을 사용하십시오.

[global]
rw=randwrite
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgwrite]
rw=randwrite
iodepth=64

Ioping을 사용하여 디스크 대기 시간 측정

IOPS 외에도 스토리지 품질을 특징짓는 또 다른 중요한 매개변수가 있습니다. 바로 대기 시간입니다. 지연 시간 스토리지에 대한 액세스 시간(밀리초 단위로 측정)을 결정하는 입/출력 요청 지연입니다. 대기 시간이 길수록 앱은 디스크에서 데이터를 가져올 때까지 기다려야 합니다. 20ms 이상 지연 시간 값 일반적인 데이터 저장 시스템의 경우 열악한 것으로 간주됩니다.

Linux에서 디스크 대기 시간을 확인하려면 ioping 도구가 사용됨:

# yum install ioping -y

# apt-get install ioping

디스크에 대한 대기 시간 테스트 실행(20개 요청 실행):

# ioping -c 20 /tmp/

4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=1 time=1.55 ms (warmup)
......................
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=19 time=176.3 us (fast)
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=20 time=356.9 us
--- /tmp/ (ext4 /dev/md126p5) ioping statistics ---
19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s
generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s
min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us

평균 값은 298.7 us입니다. (마이크로초)이므로 이 경우 평균 지연 시간은 0.3ms입니다. , 훌륭합니다.

대기 시간 값은 us에서 지정할 수 있습니다. (마이크로초) 또는 ms (밀리초). us one에서 ms 값을 얻으려면 1,000으로 나눕니다.

따라서 프로젝트를 시작하기 전에 서버에서 스토리지 부하 테스트를 수행하고 가장 높은 성능 값을 확인할 수 있습니다. 그러나 테스트가 디스크 어레이 또는 디스크가 지속적으로 동일한 성능을 보일 것이라고 보장하지는 않지만 프로젝트의 초기 단계에서 테스트를 받을 가치가 있습니다. 이 문서에서 Windows에서 IOPS를 테스트하는 방법을 알아보세요.