기존 또는 설계된 스토리지 시스템의 성능을 추정할 수 있는 주요 측정항목 중 하나는 IOPS입니다. (초당 입력/출력 작업 ). 간단히 말해서 IOPS는 시간 단위당 스토리지, 디스크 또는 파일 시스템에 대한 읽기/쓰기 작업의 수입니다. 이 숫자가 클수록 스토리지 성능이 향상됩니다(솔직히 말해서 IOPS 값은 지연 시간, 처리량 등과 같은 다른 스토리지 성능 특성과 함께 고려해야 함).
이 기사에서는 Windows에서 스토리지 성능(IOPS, 대기 시간, 처리량)을 측정하는 여러 방법을 살펴볼 것입니다(이 매뉴얼은 SAN/iSCSI의 로컬 하드 드라이브, SSD, SMB 네트워크 폴더, CSV 볼륨 또는 LUN에 사용할 수 있습니다. 저장).
Windows에서 디스크 성능 카운터를 사용하여 스토리지 I/O 캡처
성능 모니터의 내장 디스크 성능 카운터를 사용하여 Windows의 현재 스토리지 I/O 워크로드를 대략적으로 추정할 수 있습니다. . 이러한 카운터 데이터를 수집하려면:
- Perfmon 시작
- 새 데이터 수집기 세트 만들기 수동으로 만들기를 선택합니다.;
- 데이터 로그 만들기 확인란을 선택합니다. -> 성능 카운터;
- 이제 새 데이터 컬렉션 집합의 속성에서 물리적 디스크에 대한 다음 성능 카운터를 추가합니다. 개체(특정 디스크 또는 사용 가능한 모든 로컬 디스크에 대한 카운터를 선택할 수 있음):
- 평균 디스크 초/전송
- 평균 디스크 대기열 길이
- 평균 디스크 바이트/전송
- 디스크 바이트/초
- 디스크 전송/초
- 분할 IO/초
- 다른 데이터 수집 속성을 변경할 수 있습니다. 기본적으로 카운터 값은 15초마다 수집됩니다. 실시간 디스크 성능을 표시하려면 모니터링 도구 -> 성능 모니터에서 지정된 성능 카운터를 추가해야 합니다. 부분.
- 성능 카운터 데이터 수집을 시작해야 합니다(시작 선택 ) 분석을 위한 충분한 정보가 수집될 때까지 기다립니다. 그런 다음 데이터 수집기 세트를 마우스 오른쪽 버튼으로 클릭하고 중지를 선택합니다.;
- 수집된 성능 데이터를 보려면 Perfmon -> Reports -> User Defined -> Data_Disk_IO -> check_the_last_set으로 이동하십시오. . 기본적으로 디스크 데이터는 그래프로 표시됩니다.
- Ctrl + G를 사용하여 보고서로 전환 방법.
Perfmon에서 수집한 스토리지 성능 카운터를 이해하는 방법은 무엇입니까? 디스크/스토리지 성능을 빠르게 분석하려면 다음 5개 이상의 카운터 값을 확인해야 합니다.
카운터 데이터를 분석할 때 현재 물리적 디스크(스토리지) 구성(RAID 또는 Stripe 사용 여부, 디스크 수 및 유형, 캐시 크기 등)을 이해하는 것이 좋습니다.- 디스크 초/전송 – 저장 장치 또는 디스크로 한 번의 쓰기/읽기 작업을 수행하는 데 필요한 시간(디스크 대기 시간 ). 지연이 25ms(0.25)보다 크면 디스크 어레이가 I/O 작업을 제시간에 처리할 수 없습니다. 부하가 높은 서버의 경우 디스크 대기 시간 값은 10ms(0.1)를 초과해서는 안 됩니다.
- 디스크 전송/초 – (IOPS). 초당 읽기/쓰기 작업 수입니다. 이것은 디스크 액세스 강도의 주요 지표입니다(다양한 디스크 유형에 대한 대략적인 IOPS 값은 기사 끝에 나열됨).
- 디스크 바이트/초 – 초당 총 디스크 처리량(읽기+쓰기)입니다. 최대값은 디스크 유형에 따라 다릅니다(일반 HDD 디스크의 경우 150-250Mb/s, SSD의 경우 500-10000).
- 초당 분할 IO – 운영 체제가 하나의 I/O 작업을 여러 디스크 요청으로 분할해야 할 때 디스크 조각화 표시기. 또한 애플리케이션이 한 번의 작업으로 전송할 수 없는 너무 큰 데이터 블록을 요청하고 있음을 나타낼 수 있습니다.
- 평균 디스크 대기열 길이 – 대기 중인 평균 읽기/쓰기 요청 수입니다. 단일 디스크의 경우 대기열 길이는 2를 초과해서는 안 됩니다. . 4개의 디스크로 구성된 RAID 어레이의 경우 디스크 대기열 길이의 임계값은 8입니다.
DiskSpd:Windows에서 디스크 성능 및 IOPS 테스트
Microsoft는 DiskSpd를 사용할 것을 권장합니다. (https://aka.ms/diskspd) 디스크(스토리지) 시스템에 부하를 생성하고 성능을 측정하기 위한 유틸리티. 이것은 여러 스레드에서 지정된 드라이브 대상으로 I/O 작업을 수행할 수 있는 명령줄 인터페이스 도구입니다. 나는 종종 DiskSpd를 사용하여 스토리지 성능을 측정하고 특정 서버에서 사용 가능한 최대 읽기/쓰기 속도 및 IOPS를 얻습니다(물론 스토리지의 성능도 측정할 수 있습니다. 이 경우 diskspd는 스토리지 로드를 생성하는 데 사용됩니다. ).
DiskSpd는 설치가 필요하지 않으며 아카이브를 로컬 디스크에 다운로드하고 추출하기만 하면 됩니다. x64비트 시스템의 경우 amd64fre의 diskspd.exe 버전을 사용합니다. 디렉토리.
다음 명령을 사용하여 디스크 성능을 테스트합니다.
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt
-c50G
– 파일 크기 50GB(스토리지 컨트롤러의 캐시에 맞지 않도록 큰 파일 크기를 사용하는 것이 좋습니다),-d300
– 테스트 기간(초)-r
– 임의 읽기/쓰기 작업(순차 액세스를 테스트해야 하는 경우 –s 사용),-t8
– 스레드 수-w40
– 쓰기 대 읽기 작업 비율 40%/ 60%;-o32
— 대기열 길이;-b64K
— 블록 크기;-Sh
— 캐시를 사용하지 마십시오.-L
— 대기 시간 측정E:\diskpsdtmp.dat
– 테스트 파일 경로.
스트레스 테스트가 완료된 후 출력 테이블에서 평균 스토리지 성능 값을 얻을 수 있습니다.
내 테스트에서 다음과 같은 성능 데이터(총 IO 테이블 확인)를 얻었습니다.
- MiB/s — 241(약 252Mb/s, 나쁘지 않음),
- IOPS — 3866(완벽하게 좋습니다!)
- 평균 지연 시간 — 66.206ms(매우 큰 지연 시간!)
읽기(섹션 읽기 IO) 또는 쓰기(섹션 쓰기 IO) 작업에 대한 개별 값을 가져올 수 있습니다.
diskspd를 사용하여 여러 디스크 또는 스토리지 LUN을 테스트한 후 이를 비교하거나 작업에 원하는 성능을 가진 어레이를 선택할 수 있습니다.
PowerShell을 사용하여 스토리지 IOPS, 처리량 및 대기 시간을 측정하는 방법은 무엇입니까?
본질적으로 SQLIO.exe의 추가 기능인 PowerShell 스크립트(Microsoft MVP의 Mikael Nystrom 작성)를 찾았습니다. 유틸리티(파일 스토리지 성능 테스트 세트).
참고 . 2015년 12월에 Microsoft는 이 도구에 대한 지원을 종료하고 SQLIO를 보다 보편적인 도구인 Diskspd로 교체한다고 발표했습니다. , 웹 사이트에서 SQLIO 배포 파일을 제거했습니다. 따라서 sqlio.exe를 직접 검색하거나 당사 웹 사이트에서 다운로드해야 합니다(PowerShell 스크립트가 있는 아카이브에 있음).따라서 2개의 파일이 포함된 아카이브를 다운로드하십시오. SQLIO.exe 및 DiskPerformance.ps1 (disk_perf_iops.ZIP — 74KB) 원하는 폴더에 압축을 풉니다.
PowerShell 스크립트를 실행하여 디스크 성능 및 IOPS를 추정하는 예:
.\DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:\temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView
스크립트 인수를 고려해 보겠습니다.
–TestFileName test.dat
– FSUTIL 도구에 의해 생성된 파일의 이름,–TestFileSizeInGB 1
– 테스트 파일 크기. 가능한 값은 1.5, 10, 50, 100, 500, 1,000GB입니다. 파일 크기는 스토리지 시스템 캐시 크기보다 커야 합니다. 그렇지 않으면 디스크 대신 캐시 데이터에 대해 IOPS가 측정됩니다.-TestFilepath C:\Temp
– 여기에서 성능을 측정할 디스크와 테스트 파일이 생성될 디스크의 폴더를 지정합니다. 네트워크 공유 폴더(SMB)에 대한 UNC 경로를 지정할 수도 있습니다.-TestMode Get-LargeIO
– 입출력 측정에는 두 가지 옵션이 있습니다. Get-SmallIO IOPS 및 Get-LargeIO를 측정할 수 있습니다. 데이터 전송 속도를 측정합니다. SmallIO 인수와 LargeIO 인수의 차이점은 비율을 측정하는 동안 8KB와 512KB의 블록 크기와 그에 따라 액세스 유형(임의 또는 순차)입니다.-FastMode True
– Fastmode에서 각 테스트는 10초 동안 실행되고, 그렇지 않으면 60초가 걸립니다.-RemoveTestFile True
– 테스트가 끝난 후 테스트 파일을 제거합니다.-OutputFormat Out-GridView
– 테스트 결과는 PowerShell 콘솔(Format-Table ) 또는 별도의 그래픽 차트 창(Out-Gridview ).
우리의 경우(SAN을 통해 연결된 HP MSA 2040의 VMFS 데이터 저장소에 있는 vmdk 가상 디스크가 사용됨) 디스크 어레이는 약 15,000의 평균 IOPS 값을 보여주었습니다. 약 5 Gbit/s의 데이터 전송 속도(처리량) .
다음 표에는 다양한 디스크 유형에 대한 대략적인 IOPS 값이 나와 있습니다.
유형 | IOPS |
SSD(SLC) | 6000 |
SSD(MLC) | 1000 |
15K RPM | 175-200 |
10K RPM | 125-150 |
7.2K RPM | 50-75 |
10K RPM의 드라이브 6개 중 RAID5 | 1000 |
일부 인기 있는 Microsoft 서비스의 IOPS에서 디스크 성능에 대한 몇 가지 권장 사항을 찾았습니다.
- Microsoft Exchange 2010 사용자가 5,000명인 경우 각 사용자는 하루에 75개의 이메일을 수신하고 30개의 이메일을 보내며 최소 3,750 IOPS가 필요합니다.
- Microsoft SQL 2008 서버 초당 3,500개의 SQL 트랜잭션(TPS)을 사용하려면 28,000IOPS가 필요합니다.
- 일반적인 Windows 응용 프로그램 서버 사용자 10-100명의 경우 10-40 IOPS가 필요합니다.