หนึ่งในเมตริกหลักซึ่งช่วยในการประมาณประสิทธิภาพของระบบจัดเก็บข้อมูลที่มีอยู่หรือที่ออกแบบไว้คือ IOPS (การทำงานของอินพุต/เอาต์พุตต่อวินาที ). พูดง่ายๆ ก็คือ IOPS คือจำนวนของการดำเนินการอ่าน/เขียนที่มีหน่วยเก็บข้อมูล ดิสก์ หรือระบบไฟล์ต่อหน่วยเวลา ยิ่งตัวเลขนี้มากเท่าไหร่ ประสิทธิภาพของพื้นที่จัดเก็บข้อมูลของคุณก็จะยิ่งมากขึ้นเท่านั้น (พูดตามตรง ค่า IOPS จะต้องพิจารณาร่วมกับคุณลักษณะด้านประสิทธิภาพของพื้นที่เก็บข้อมูลอื่นๆ เช่น เวลาในการตอบสนอง ปริมาณงาน ฯลฯ)
ในบทความนี้ เราจะพิจารณาหลายวิธีในการวัดประสิทธิภาพการจัดเก็บข้อมูล (IOPS, เวลาแฝง, ปริมาณงาน) ใน Windows (คุณสามารถใช้คู่มือนี้สำหรับฮาร์ดไดรฟ์ในเครื่อง, SSD, โฟลเดอร์เครือข่าย SMB, โวลุ่ม CSV หรือ LUN บน SAN/iSCSI การจัดเก็บ)
การจับ I/O ที่เก็บข้อมูลโดยใช้ตัวนับประสิทธิภาพของดิสก์ใน Windows
คุณสามารถประมาณการปริมาณงาน I/O ที่เก็บข้อมูลปัจจุบันใน Windows ได้โดยใช้ตัวนับประสิทธิภาพของดิสก์ในตัวจาก การตรวจสอบประสิทธิภาพ . ในการรวบรวมข้อมูลเคาน์เตอร์เหล่านี้:
- เริ่มต้นประสิทธิภาพการทำงาน
- สร้าง ชุดรวบรวมข้อมูลใหม่ และเลือกสร้างด้วยตนเอง;
- เลือกช่องทำเครื่องหมาย สร้างบันทึกข้อมูล -> ตัวนับประสิทธิภาพ;
- ตอนนี้อยู่ในคุณสมบัติของชุดการรวบรวมข้อมูลใหม่ ให้เพิ่มตัวนับประสิทธิภาพต่อไปนี้สำหรับ Physical Disk ออบเจ็กต์ (คุณสามารถเลือกตัวนับสำหรับดิสก์เฉพาะหรือสำหรับดิสก์ในเครื่องที่มีอยู่ทั้งหมด):
- เฉลี่ย ดิสก์วินาที/โอน
- เฉลี่ย ความยาวของคิวดิสก์
- ไบต์/การถ่ายโอนเฉลี่ยของดิสก์
- ดิสก์ไบต์/วินาที
- การถ่ายโอนดิสก์/วินาที
- แยก IO/วินาที
- คุณสามารถเปลี่ยนคุณสมบัติการเก็บรวบรวมข้อมูลอื่นๆ ได้ ตามค่าเริ่มต้น ค่าตัวนับจะถูกรวบรวมทุกๆ 15 วินาที ในการแสดงประสิทธิภาพของดิสก์แบบเรียลไทม์ คุณต้องเพิ่มตัวนับ Perfmon ที่ระบุใน เครื่องมือตรวจสอบ -> การตรวจสอบประสิทธิภาพ ส่วน.
- ยังคงเริ่มรวบรวมข้อมูลตัวนับประสิทธิภาพ (เลือก เริ่ม ) และรอการรวบรวมข้อมูลเพียงพอสำหรับการวิเคราะห์ หลังจากนั้น ให้คลิกขวาที่ชุดตัวรวบรวมข้อมูลและเลือก หยุด;
- หากต้องการดูข้อมูลประสิทธิภาพที่รวบรวม ไปที่ ประสิทธิภาพ -> รายงาน -> กำหนดโดยผู้ใช้ -> Data_Disk_IO —> check_the_last_set . ตามค่าเริ่มต้น ข้อมูลดิสก์จะแสดงเป็นกราฟ
- ใช้ Ctrl + G เพื่อสลับไปที่รายงาน โหมด.
จะเข้าใจตัวนับประสิทธิภาพการจัดเก็บที่รวบรวมโดย Perfmon ได้อย่างไร สำหรับการวิเคราะห์อย่างรวดเร็วของประสิทธิภาพของดิสก์/การจัดเก็บ คุณต้องดูค่าของตัวนับ 5 ตัวต่อไปนี้เป็นอย่างน้อย
เมื่อวิเคราะห์ข้อมูลตัวนับ ขอแนะนำให้คุณเข้าใจการกำหนดค่าฟิสิคัลดิสก์ (ที่เก็บข้อมูล) ปัจจุบัน (ไม่ว่าจะใช้ RAID หรือ Stripe จำนวนและประเภทของดิสก์ ขนาดแคช ฯลฯ)- ดิสก์วินาที/โอน – เวลาที่ใช้ในการดำเนินการเขียน/อ่านหนึ่งครั้งกับอุปกรณ์จัดเก็บข้อมูลหรือดิสก์ (เวลาแฝงของดิสก์ ). หากการหน่วงเวลามากกว่า 25 ms (0.25) แสดงว่าอาร์เรย์ดิสก์ไม่สามารถจัดการการทำงานของ I/O ได้ตรงเวลา สำหรับเซิร์ฟเวอร์ที่มีภาระงานสูง ค่าเวลาแฝงของดิสก์ไม่ควรเกิน 10 มิลลิวินาที (0.1)
- การถ่ายโอนดิสก์/วินาที – (IOPS) จำนวนการดำเนินการอ่าน/เขียนต่อวินาที นี่คือตัวบ่งชี้หลักของความรุนแรงในการเข้าถึงดิสก์ (ค่า IOPS โดยประมาณสำหรับดิสก์ประเภทต่างๆ จะแสดงอยู่ที่ท้ายบทความ)
- ไบต์ของดิสก์/วินาที – ปริมาณงานดิสก์ทั้งหมด (อ่าน+เขียน) ต่อวินาที ค่าสูงสุดขึ้นอยู่กับประเภทดิสก์ (150-250 Mb/s – สำหรับดิสก์ HDD ปกติและ 500-10000 สำหรับ SSD)
- แยก IO/วินาที – ตัวบ่งชี้การกระจายตัวของดิสก์เมื่อระบบปฏิบัติการต้องแยกการดำเนินการ I/O หนึ่งรายการออกเป็นคำขอดิสก์หลายรายการ นอกจากนี้ยังอาจบ่งชี้ว่าแอปพลิเคชันกำลังขอบล็อกข้อมูลขนาดใหญ่เกินไปซึ่งไม่สามารถถ่ายโอนในการดำเนินการเดียวได้
- ค่าเฉลี่ย ความยาวของคิวดิสก์ – จำนวนคำขออ่าน/เขียนโดยเฉลี่ยที่เข้าคิว สำหรับดิสก์เดียว ความยาวคิวไม่ควรเกิน 2 . สำหรับอาร์เรย์ RAID ของดิสก์ 4 ตัว ค่าขีดจำกัดของความยาวคิวดิสก์คือ 8
DiskSpd:การทดสอบประสิทธิภาพของดิสก์และ IOPS ใน Windows
Microsoft แนะนำให้ใช้ DiskSpd (https://aka.ms/diskspd) ยูทิลิตี้สำหรับสร้างโหลดบนระบบดิสก์ (ที่เก็บข้อมูล) และวัดประสิทธิภาพ นี่คือเครื่องมืออินเทอร์เฟซบรรทัดคำสั่งที่สามารถดำเนินการ I/O กับเป้าหมายของไดรฟ์ที่ระบุในหลายเธรด ฉันมักจะใช้ DiskSpd เพื่อวัดประสิทธิภาพการจัดเก็บข้อมูลและรับความเร็วในการอ่าน/เขียนสูงสุดและ IOPS จากเซิร์ฟเวอร์เฉพาะ (แน่นอนว่าคุณสามารถวัดประสิทธิภาพของที่เก็บข้อมูลได้เช่นกัน ในกรณีนี้ diskspd จะถูกใช้เพื่อสร้างภาระการจัดเก็บข้อมูล ).
DiskSpd ไม่ต้องการการติดตั้ง เพียงแค่ดาวน์โหลดและแตกไฟล์เก็บถาวรไปยังดิสก์ในเครื่อง สำหรับระบบ x64 บิต ให้ใช้เวอร์ชันของ diskspd.exe จาก amd64fre ไดเรกทอรี
ฉันใช้คำสั่งต่อไปนี้เพื่อทดสอบประสิทธิภาพของดิสก์:
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt
-c50G
– ขนาดไฟล์ 50 GB (ควรใช้ขนาดไฟล์ใหญ่จะดีกว่าเพื่อไม่ให้อยู่ในแคชของตัวควบคุมการจัดเก็บข้อมูล)-d300
– ระยะเวลาทดสอบเป็นวินาที;-r
– การดำเนินการอ่าน/เขียนแบบสุ่ม (หากคุณต้องการทดสอบการเข้าถึงตามลำดับ ให้ใช้ –s);-t8
– จำนวนเธรด;-w40
– อัตราส่วนการเขียนต่อการอ่าน 40%/ 60%;-o32
— ความยาวคิว;-b64K
— ขนาดบล็อก-Sh
— ไม่ใช้แคช-L
— วัดเวลาแฝง;E:\diskpsdtmp.dat
– ทดสอบเส้นทางของไฟล์
หลังจากการทดสอบความเค้นเสร็จสิ้น ค่าประสิทธิภาพการจัดเก็บเฉลี่ยสามารถรับได้จากตารางผลลัพธ์
ในการทดสอบของฉัน ได้รับข้อมูลประสิทธิภาพต่อไปนี้ (ตรวจสอบตาราง Total IO) แล้ว:
- MiB/s — 241 (ประมาณ 252 Mb/s ไม่เลว);
- IOPS — 3866 (ดีมาก!);
- เวลาแฝงเฉลี่ย — 66.206 ms (เวลาแฝงค่อนข้างมาก!)
คุณสามารถรับค่าแต่ละค่าสำหรับการดำเนินการอ่าน (ส่วน Read IO) หรือเขียน (ส่วน เขียน IO) ได้
หลังจากทดสอบดิสก์หรือ LUN ของพื้นที่เก็บข้อมูลหลายตัวโดยใช้ diskspd แล้ว คุณสามารถเปรียบเทียบหรือเลือกอาร์เรย์ที่มีประสิทธิภาพที่ต้องการสำหรับงานของคุณ
จะวัด IOPS ของพื้นที่เก็บข้อมูล ปริมาณงาน และเวลาแฝงโดยใช้ PowerShell ได้อย่างไร
ฉันพบสคริปต์ PowerShell (โดย Mikael Nystrom, Microsoft MVP) ซึ่งเป็นส่วนเสริมของ SQLIO.exe ยูทิลิตี้ (ชุดการทดสอบประสิทธิภาพการจัดเก็บไฟล์)
หมายเหตุ . ในเดือนธันวาคม 2015 Microsoft ได้ประกาศยุติการสนับสนุนเครื่องมือนี้และแทนที่ SQLIO ด้วยเครื่องมือที่เป็นสากลมากขึ้น Diskspd และลบไฟล์การแจกจ่าย SQLIO ออกจากเว็บไซต์ของตน ดังนั้น คุณจะต้องค้นหา sqlio.exe ด้วยตัวเอง หรือดาวน์โหลดจากเว็บไซต์ของเรา (อยู่ในไฟล์เก็บถาวรที่มีสคริปต์ PowerShell)ดังนั้น ดาวน์โหลดไฟล์เก็บถาวรที่มี 2 ไฟล์:SQLIO.exe และ DiskPerformance.ps1 (disk_perf_iops.ZIP — 74 KB) และแตกไฟล์ไปยังโฟลเดอร์ใดก็ได้
ตัวอย่างของการรันสคริปต์ 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,000 GB ขนาดไฟล์ต้องมีขนาดใหญ่กว่าขนาดแคชของระบบจัดเก็บข้อมูล มิฉะนั้น IOPS จะถูกวัดสำหรับข้อมูลแคช แทนที่จะเป็นดิสก์-TestFilepath C:\Temp
– ที่นี่คุณระบุดิสก์เพื่อวัดประสิทธิภาพและโฟลเดอร์บนดิสก์ซึ่งไฟล์ทดสอบจะถูกสร้างขึ้น คุณยังสามารถระบุเส้นทาง UNC ไปยังโฟลเดอร์แชร์เครือข่าย (SMB) ได้-TestMode Get-LargeIO
- การวัดอินพุต - เอาต์พุตมีสองตัวเลือก รับ SmallIO อนุญาตให้วัด IOPS และ Get-LargeIO วัดอัตราการถ่ายโอนข้อมูล ความแตกต่างระหว่างอาร์กิวเมนต์ SmallIO และ LargeIO อยู่ในขนาดบล็อก 8 KB และ 512 KB ขณะวัดอัตรา และประเภทการเข้าถึง สุ่มหรือตามลำดับ ตามลำดับ-FastMode True
– ใน Fastmode การทดสอบแต่ละครั้งใช้เวลา 10 วินาที มิฉะนั้นจะใช้เวลา 60 วินาที-RemoveTestFile True
– ลบไฟล์ทดสอบหลังจากการทดสอบสิ้นสุดลง-OutputFormat Out-GridView
– ผลการทดสอบสามารถแสดงผลได้ทั้งในคอนโซล PowerShell (Format-Table ) หรือในหน้าต่างแผนภูมิกราฟิกแยกต่างหาก (Out-Gridview )
ในกรณีของเรา (ใช้ดิสก์เสมือน vmdk บน VMFS datastore บน HP MSA 2040 ที่เชื่อมต่อผ่าน SAN) อาร์เรย์ของดิสก์แสดงค่า IOPS เฉลี่ยประมาณ 15,000 และอัตราการส่งข้อมูล (ทรูพุต) ประมาณ 5 Gbit/s .
ในตารางต่อไปนี้ ค่า IOPS โดยประมาณสำหรับดิสก์ประเภทต่างๆ จะแสดง:
ประเภท | IOPS |
SSD(SLC) | 6000 |
SSD(MLC) | 1000 |
15K รอบต่อนาที | 175-200 |
10K รอบต่อนาที | 125-150 |
7.2K รอบต่อนาที | 50-75 |
Raid5 จาก 6 ไดรฟ์ที่มี 10K RPM | 1000 |
ฉันพบคำแนะนำบางประการเกี่ยวกับประสิทธิภาพของดิสก์ใน IOPS สำหรับบริการยอดนิยมของ Microsoft:
- Microsoft Exchange 2010 ด้วยผู้ใช้ 5,000 ราย แต่ละรายได้รับ 75 และส่งอีเมล 30 ฉบับต่อวัน โดยจะต้องมี IOPS อย่างน้อย 3,750 ฉบับ
- เซิร์ฟเวอร์ Microsoft SQL 2008 ด้วยธุรกรรม 3,500 SQL ต่อวินาที (TPS) ต้องการ 28,000 IOPS;
- แอปพลิเคชันเซิร์ฟเวอร์ Windows ทั่วไป สำหรับผู้ใช้ 10-100 รายต้องใช้ 10-40 IOPS