Linux VM에서 Persistent Disk 성능 벤치마킹


이 문서에서는 Windows 가상 머신(VM) 인스턴스에서 Persistent Disk 성능을 벤치마킹하는 방법을 설명합니다. Linux VM의 경우 Linux VM에서 Persistent Disk 성능 벤치마킹을 참조하세요.

실행 중인 인스턴스에서 사용되는 디스크의 IOPS와 처리량을 측정하려면 원하는 구성으로 파일 시스템을 벤치마킹합니다. 이 옵션을 사용하면 기존 디스크의 콘텐츠가 손실되는 일 없이 실제 워크로드를 테스트할 수 있습니다. 기존 디스크의 파일 시스템을 벤치마킹할 때 개발 환경에 특정한 많은 요소가 벤치마킹 결과에 영향을 미칠 수 있으며 디스크 성능 한도에 도달하지 않을 수 있습니다.

Persistent Disk의 원시 성능을 측정하려면 블록 기기를 직접 벤치마킹합니다. 이 옵션을 사용하면 원시 디스크 성능을 디스크 성능 한도와 비교할 수 있습니다.

C4 VM에서 Windows는 기기 제출 큐당 최대 깊이 1024를 지원합니다. 큐가 가득 차면 Windows는 큐가 부분적으로 드레이닝될 때까지 I/O 제출을 중지하므로 성능이 크게 저하됩니다. 이 조건을 트리거하지 않으려면 벤치마킹 워크로드를 연결된 볼륨당 합산 큐 깊이 1024로 제한하는 것이 좋습니다.

벤치마킹 소프트웨어 구성

Windows VM에서 Persistent Disk 성능을 벤치마킹하려면 DISKSPD를 사용합니다.

  1. VM 인스턴스에 연결

  2. 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:으로 마운트되고 관리자 권한 명령 프롬프트 창에서 명령어가 실행된다고 가정합니다.

  1. VM에 연결

  2. DISKSPD 소프트웨어 구성을 확인하고 디렉터리를 64비트 바이너리로 변경합니다.

    cd C:\DISKSPD\amd64
    
  3. 디스크에 DISKTEST.DAT라는 새 10GB 파일을 만듭니다.

    set TESTFILE=D:\DISKTEST.DAT
    diskspd -d0 -c10G %TESTFILE%
    
  4. I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 쓰기를 수행하여 쓰기 처리량을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
    
  5. I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정한 상태로 무작위 쓰기를 수행하여 쓰기 IOPS를 테스트합니다.

    diskspd -d60 -b4K -o256 -Sh -w100 -r %TESTFILE%
    
  6. I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 최소 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 읽기를 수행하여 읽기 처리량을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTFILE%
    
  7. I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정해서 무작위 읽기를 수행하여 읽기 IOPS를 테스트합니다.

    diskspd -d60 -b4K -o256 -Sh -r %TESTFILE%
    
  8. 삭제:

    del %TESTFILE%
    

Persistent Disk 원시 성능 벤치마킹

개발 환경 외부에서 Persistent Disk 볼륨의 성능만 측정하려면 폐기 Persistent Disk와 VM에서 블록 기기의 읽기 및 쓰기 성능을 테스트합니다.

  1. VM 인스턴스 만들기 및 시작

  2. 벤치마킹할 VM 인스턴스에 Persistent Disk를 추가합니다.

  3. VM 인스턴스에 연결

  4. DISKSPD 소프트웨어 구성을 확인하고 디렉터리를 64비트 바이너리로 변경합니다.

    cd C:\DISKSPD\amd64
    
  5. 디스크에 예약되지 않은 파티션이 없는지 확인합니다. 관리자 권한 명령어 프롬프트 창에 diskpart를 입력합니다.

    diskpart
    
  6. 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        *
    
  7. 벤치마킹할 디스크를 선택합니다.

    DISKPART> select disk 1
    
  8. 선택한 디스크의 파티션을 나열합니다.

    DISKPART> list partition
    
       Partition ###  Type              Size       Offset
       -------------  ----------------  --------   -------
       Partition 1    Reserved              15 MB    17 KB
       Partition 2    Primary             1024 GB    16 MB
    
  9. 기본 파티션 2를 선택합니다.

    DISKPART> select partition 2
    
  10. 선택한 파티션을 삭제합니다.

    DISKPART> delete partition
    
  11. diskpart를 종료합니다.

    DISKPART> exit
    

벤치마킹하려는 디스크에 예약된 파티션 외에 다른 파티션이 있는 경우 위 단계를 반복해야 합니다. 예약된 파티션만 남아 있으면 다음 단계를 계속 진행합니다.

  1. 디스크를 식별하고 파티션이 없는 것을 확인한 후 TESTDRIVE 환경 변수를 '#'로 설정하고 테스트할 디스크 수를 설정합니다.

    C:/> set TESTDRIVE=#1
    
  2. I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 쓰기를 수행하여 쓰기 처리량을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
    
  3. I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정한 상태로 무작위 쓰기를 수행하여 쓰기 IOPS를 테스트합니다.

    diskspd -d60 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
    
  4. 쓰기 지연 시간을 테스트합니다. I/O 지연 시간을 테스트할 때는 VM이 최대 대역폭 또는 IOPS에 도달하지 않아야 합니다. 그렇지 않으면 관찰된 지연 시간에 실제 Persistent Disk I/O 지연 시간이 반영되지 않습니다.

    diskspd -d60 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
    
  5. I/O 블록 크기를 1MB로 설정하고 I/O 깊이를 최소 64 이상으로 설정한 상태로 여러 동시 스트림(16개 이상)에 순차적 읽기를 수행하여 읽기 처리량을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
    
  6. I/O 블록 크기를 4KB로 설정하고 I/O 깊이를 256 이상으로 설정해서 무작위 읽기를 수행하여 읽기 IOPS를 테스트합니다.

    diskspd -d60 -b4K -o256 -Sh -r %TESTDRIVE%
    
  7. 읽기 지연 시간을 테스트하려면 디스크에 데이터를 채워 실질적으로 지연 시간을 측정하는 것이 중요합니다. Persistent Disk가 포화 한도에 도달하면 수신 I/O 작업이 푸시백되고 이로 인해 인위적인 I/O 지연 시간 증가로 반영되므로 이 테스트 중에는 VM이 IOPS 또는 처리량 한도에 도달하지 않아야 합니다.

    diskspd -d60 -b4K -o4 -Sh -r -L %TESTDRIVE%
    
  8. 순차적 읽기 대역폭을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
    
  9. 순차적 쓰기 대역폭을 테스트합니다.

    diskspd -d60 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
    
  10. 폐기된 영구 디스크와 VM을 삭제합니다.

    1. 성능 벤치마킹에 사용된 디스크를 삭제합니다.
    2. 성능 벤치마킹을 위해 만든 VM을 삭제합니다.

다음 단계