이 문서에서는 Windows 가상 머신(VM) 인스턴스에서 Persistent Disk 성능을 벤치마킹하는 방법을 설��합니다. Linux VM의 경우 Linux VM에서 Persistent Disk 성능 벤치마킹을 참조하세요.
실행 중인 인스턴스에서 사용되는 디스크의 IOPS와 처리량을 측정하려면 원하는 구성으로 파일 시스템을 벤치마킹합니다. 이 옵션을 사용하면 기존 디스크의 콘텐츠가 손실되는 일 없이 실제 워크로드를 테스트할 수 있습니다. 기존 디스크의 파일 시스템을 벤치마킹할 때 개발 환경에 특정한 많은 요소가 벤치마킹 결과에 영향을 미칠 수 있으며 디스크 성능 한도에 도달하지 않을 수 있습니다.
Persistent Disk의 원시 성능을 측정하려면 블록 기기를 직접 벤치마킹합니다. 이 옵션을 사용하면 원시 디스크 성능을 디스크 성능 한도와 비교할 수 있습니다.
벤치마킹 소프트웨어 구성
Windows VM에서 Persistent Disk 성능을 벤치마킹하려면 DISKSPD
를 사용합니다.
Powershell을 열고 다음 명령어를 사용하여
DISKSPD
도구를 다운로드합니다.$client = New-Object System.Net.WebClient $client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip") Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD Get-ChildItem C:\DISKSPD
실행 중인 VM 인스턴스에서 디스크의 IOPS 및 처리량 벤치마킹
디스크의 콘텐츠가 손실되지 않으면서 실행 중인 VM 인스턴스의 활성 디스크에 있는 실제 워크로드의 IOPS와 처리량을 측정하려면 기존 파일 시스템의 새 디렉터리를 기준으로 벤치마킹합니다.
다음 단계에서는 테스트할 디스크가 D:
으로 마운트되고 관리자 권한 명령 프롬프트 창에서 명령어가 실행된다고 가정합니다.
DISKSPD
소프트웨어 구성을 확인하고 디렉터리를 64비트 바이너리로 변경합니다.cd C:\DISKSPD\amd64
디스크에
DISKTEST.DAT
라는 새 10GB 파일을 만듭니다.set TESTFILE=D:\DISKTEST.DAT diskspd -d0 -c10G %TESTFILE%
I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 쓰기를 수행하여 쓰기 처리량을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정한 상태로 무작위 쓰기를 수행하여 쓰기 IOPS를 테스트합니다.
diskspd -d60 -b4K -o256 -Sh -w100 -r %TESTFILE%
I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 최소 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 읽기를 수행하여 읽기 처리량을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTFILE%
I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정해서 무작위 읽기를 수행하여 읽기 IOPS를 테스트합니다.
diskspd -d60 -b4K -o256 -Sh -r %TESTFILE%
삭제:
del %TESTFILE%
Persistent Disk 원시 성능 벤치마킹
개발 환경 외부에서 Persistent Disk 볼륨의 성능만 측정하려면 폐기 Persistent Disk와 VM에서 블록 기기의 읽기 및 쓰기 성능을 테스트합니다.
벤치마킹할 VM 인스턴스에 Persistent Disk를 추가합니다.
DISKSPD
소프트웨어 구성을 확인하고 디렉터리를 64비트 바이너리로 변경합니다.cd C:\DISKSPD\amd64
디스크에 예약되지 않은 파티션이 없는지 확인합니다. 관리자 권한 명령어 프롬프트 창에
diskpart
를 입력합니다.diskpart
VM에 연결된 디스크를 나열합니다.
DISKPART> list disk
다음 예시 출력에서는 새로 생성된 1TB 디스크인 디스크 1이 출력에 표시됩니다.
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 120 GB 1024 KB * Disk 1 Online 1024 GB 1023 GB *
벤치마킹할 디스크를 선택합니다.
DISKPART> select disk 1
선택한 디스크의 파티션을 나열합니다.
DISKPART> list partition
Partition ### Type Size Offset ------------- ---------------- -------- ------- Partition 1 Reserved 15 MB 17 KB Partition 2 Primary 1024 GB 16 MB
기본 파티션 2를 선택합니다.
DISKPART> select partition 2
선택한 파티션을 삭제합니다.
DISKPART> delete partition
diskpart를 종료합니다.
DISKPART> exit
벤치마킹하려는 디스크에 예약된 파티션 외에 다른 파티션이 있는 경우 위 단계를 반복해야 합니다. 예약된 파티션만 남아 있으면 다음 단계를 계속 진행합니다.
디스크를 식별하고 파티션이 없는 것을 확인한 후
TESTDRIVE
환경 변수를 '#'로 설정하고 테스트할 디스크 수를 설정합니다.C:/> set TESTDRIVE=#1
I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 쓰기를 수행하여 쓰기 처리량을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정한 상태로 무작위 쓰기를 수행하여 쓰기 IOPS를 테스트합니다.
diskspd -d60 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
쓰기 지연 시간을 테스트합니다. I/O 지연 시간을 테스트할 때는 VM이 최대 대역폭 또는 IOPS에 도달하지 않아야 합니다. 그렇지 않으면 관찰된 지연 시간에 실제 Persistent Disk I/O 지연 시간이 반영되지 않습니다.
diskspd -d60 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 최소 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 읽기를 수행하여 읽기 처리량을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정해서 무작위 읽기를 수행하여 읽기 IOPS를 테스트합니다.
diskspd -d60 -b4K -o256 -Sh -r %TESTDRIVE%
읽기 지연 시간을 테스트하려면 디스크에 데이터를 채워 실질적으로 지연 시간을 측정하는 것이 중요합니다. Persistent Disk가 포화 한도에 도달하면 수신 I/O 작업이 푸시백되고 이로 인해 인위적인 I/O 지연 시간 증가로 반영되므로 이 테스트 중에는 VM이 IOPS 또는 처리량 한도에 도달하지 않아야 합니다.
diskspd -d60 -b4K -o4 -Sh -r -L %TESTDRIVE%
순차적 읽기 대역폭을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
순차적 쓰기 대역폭을 테스트합니다.
diskspd -d60 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
폐기된 영구 디스크와 VM을 삭제합니다.
다음 단계
- 영구 디스크 성능 측정항목을 검토하여 디스크 성능을 모니터링하는 방법 알아보기
- Persistent Disk 가격 자세히 알아보기
- Persistent Disk 성능 최적화 방법 알아보기