मुख्य मीट्रिक में से एक जो मौजूदा या डिज़ाइन किए गए स्टोरेज सिस्टम के प्रदर्शन का अनुमान लगाने की अनुमति देता है, वह है IOPS (इनपुट/आउटपुट ऑपरेशंस प्रति सेकंड)। सरल शब्दों में, IOPS एक समय इकाई में स्टोरेज, डिस्क या फ़ाइल सिस्टम के साथ पढ़ने/लिखने के संचालन की संख्या है। यह संख्या जितनी बड़ी होगी, आपके स्टोरेज का प्रदर्शन उतना ही अधिक होगा (स्पष्ट रूप से, IOPS मान पर अन्य स्टोरेज प्रदर्शन विशेषताओं के साथ विचार किया जाना चाहिए, जैसे विलंबता, थ्रूपुट, आदि)।
इस लेख में, हम Windows में स्टोरेज प्रदर्शन (IOPS, विलंबता, थ्रूपुट) को मापने के कई तरीकों को देखेंगे (आप इस मैनुअल का उपयोग स्थानीय हार्ड ड्राइव, SSD, SMB नेटवर्क फ़ोल्डर, CSV वॉल्यूम या SAN/iSCSI स्टोरेज पर LUN के लिए कर सकते हैं)।
Windows में डिस्क प्रदर्शन काउंटर का उपयोग करके स्टोरेज I/O कैप्चर करना
आप प्रदर्शन मॉनिटर से अंतर्निहित डिस्क प्रदर्शन काउंटर का उपयोग करके Windows में वर्तमान स्टोरेज I/O वर्कलोड का अनुमान लगा सकते हैं। इन काउंटर डेटा को एकत्र करने के लिए:
- Perfmon प्रारंभ करें;
- एक नया डेटा कलेक्टर सेट बनाएं और मैन्युअली बनाएं चुनें;

- चेकबॉक्स डेटा लॉग बनाएं -> प्रदर्शन काउंटर चुनें;

- अब नए डेटा संग्रह सेट के गुणों में, भौतिक डिस्क ऑब्जेक्ट के लिए निम्न प्रदर्शन काउंटर जोड़ें (आप किसी विशिष्ट डिस्क या सभी उपलब्ध स्थानीय डिस्क के लिए काउंटर चुन सकते हैं):
- औसत डिस्क सेकंड/ट्रांसफर
- औसत डिस्क कतार लंबाई
- औसत डिस्क बाइट्स/ट्रांसफर
- डिस्क बाइट्स/सेकंड
- डिस्क ट्रांसफर/सेकंड
- स्प्लिट IO/सेकंड
- आप अन्य डेटा संग्रह गुण बदल सकते हैं। डिफ़ॉल्ट रूप से, काउंटर मान हर 15 सेकंड में एकत्र किए जाते हैं। वास्तविक समय डिस्क प्रदर्शन प्रदर्शित करने के लिए, आपको मॉनिटरिंग टूल्स -> प्रदर्शन मॉनिटर अनुभाग में निर्दिष्ट Perfmon काउंटर जोड़ने होंगे।

- पर्याप्त जानकारी एकत्र होने तक डेटा संग्रह शुरू करने के लिए (प्रारंभ चुनें) और प्रतीक्षा करें। उसके बाद, अपने डेटा कलेक्टर सेट पर राइट-क्लिक करें और रोकें चुनें;

- एकत्रित प्रदर्शन डेटा देखने के लिए Perfmon -> रिपोर्ट -> उपयोगकर्ता परिभाषित -> Data_Disk_IO —> अंतिम_सेट_जांचें पर जाएं। डिफ़ॉल्ट रूप से, डिस्क डेटा ग्राफ़ के रूप में प्रदर्शित होता है;
- रिपोर्ट मोड पर स्विच करने के लिए Ctrl + G का उपयोग करें।

Perfmon द्वारा एकत्रित स्टोरेज प्रदर्शन काउंटर को कैसे समझें? डिस्क/स्टोरेज प्रदर्शन के त्वरित विश्लेषण के लिए, आपको कम से कम निम्न 5 काउंटर के मान देखने होंगे।
काउंटर डेटा का विश्लेषण करते समय, आपके लिए वर्तमान भौतिक डिस्क (स्टोरेज) कॉन्फ़िगरेशन (क्या RAID या स्ट्राइप उपयोग किया जाता है, डिस्क की संख्या और प्रकार, कैश आकार, आदि) को समझना उचित है।
- डिस्क सेकंड/ट्रांसफर - स्टोरेज डिवाइस या डिस्क के साथ एक पढ़ने/लिखने के ऑपरेशन को करने के लिए आवश्यक समय (डिस्क विलंबता)। यदि विलंबता 25 ms (0.25) से अधिक है, तो डिस्क ऐरे I/O ऑपरेशन को समय पर संभाल नहीं सकता। उच्च लोड सर्वर के लिए, डिस्क विलंबता मान 10 ms (0.1) से अधिक नहीं होना चाहिए;
- डिस्क ट्रांसफर/सेकंड - (IOPS)। प्रति सेकंड पढ़ने/लिखने के ऑपरेशन की संख्या। यह डिस्क एक्सेस तीव्रता का मुख्य संकेतक है (विभिन्न डिस्क प्रकारों के लिए अनुमानित IOPS मान लेख के अंत में सूचीबद्ध हैं);
- डिस्क बाइट्स/सेकंड – प्रति सेकंड कुल डिस्क थ्रूपुट (पढ़ना+लिखना)। अधिकतम मान डिस्क प्रकार पर निर्भर करते हैं (150-250 Mb/s - नियमित HDD डिस्क के लिए और 500-10000 SSD के लिए);
- स्प्लिट IO/सेकंड – डिस्क विखंडन संकेतक जब ऑपरेटिंग सिस्टम को एक I/O ऑपरेशन को कई डिस्क अनुरोधों में विभाजित करना पड़ता है। यह यह भी संकेत दे सकता है कि एप्लिकेशन डेटा के बहुत बड़े ब्लॉक का अनुरोध कर रहा है जिसे एक ऑपरेशन में स्थानांतरित नहीं किया जा सकता;
- औसत डिस्क कतार लंबाई – कतारबद्ध पढ़ने/लिखने के अनुरोधों की औसत संख्या। एकल डिस्क के लिए, कतार लंबाई 2 से अधिक नहीं होनी चाहिए। 4 डिस्क के RAID ऐरे के लिए, डिस्क कतार लंबाई का सीमा मान 8 है।
DiskSpd: Windows में डिस्क प्रदर्शन और IOPS का परीक्षण
Microsoft डिस्क (स्टोरेज) सिस्टम पर लोड उत्पन्न करने और इसके प्रदर्शन को मापने के लिए DiskSpd (https://aka.ms/diskspd) उपयोगिता का उपयोग करने की सिफारिश करता है। यह एक कमांड लाइन इंटरफ़ेस टूल है जो निर्दिष्ट ड्राइव लक्ष्य के साथ कई थ्रेड्स में I/O ऑपरेशन कर सकता है। मैं विशिष्ट सर्वर (बेशक आप स्टोरेज के प्रदर्शन को भी माप सकते हैं, इस मामले में डिस्कस्पड का उपयोग स्टोरेज लोड उत्पन्न करने के लिए किया जाएगा) से अधिकतम उपलब्ध पढ़ने/लिखने की गति और IOPS प्राप्त करने के लिए स्टोरेज प्रदर्शन मापने के लिए अक्सर DiskSpd का उपयोग करता हूं।
DiskSpd को स्थापना की आवश्यकता नहीं है, बस आर्काइव डाउनलोड करें और इसे स्थानीय डिस्क पर निकालें। x64 बिट सिस्टम के लिए, amd64fre निर्देशिका से diskspd.exe संस्करण का उपयोग करें।
मैं डिस्क के प्रदर्शन का परीक्षण करने के लिए निम्न कमांड का उपयोग करता हूं:
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt
महत्वपूर्ण. DiskSpd.exe का उपयोग करते समय, परीक्षण की गई प्रणाली के डिस्क और CPU पर काफी लोड उत्पन्न होता है। उपयोगकर्ताओं के लिए प्रदर्शन गिरावट को खत्म करने के लिए, पीक घंटों में उत्पादक प्रणालियों पर इसे शुरू करने की सिफारिश नहीं की जाती है।

-c50G- फ़ाइल आकार 50 GB (बेहतर है कि बड़ी फ़ाइल आकार का उपयोग करें ताकि यह स्टोरेज कंट्रोलर के कैश में फिट न हो);-d300— टेस्ट अवधि सेकंड में;-r— रैंडम पढ़ने/लिखने के ऑपरेशन (यदि आपको अनुक्रमिक एक्सेस का परीक्षण करने की आवश्यकता है, तो –s उपयोग करें);-t8— थ्रेड्स की संख्या;-w40— लिखने से पढ़ने के ऑपरेशन का अनुपात 40%/60%;-o32— कतार लंबाई;-b64K— ब्लॉक आकार;-Sh— कैश का उपयोग न करें;-L— विलंबता मापें;E:\diskpsdtmp.dat— टेस्ट फ़ाइल पथ।
स्ट्रेस टेस्ट पूरा होने के बाद, औसत स्टोरेज प्रदर्शन मान आउटपुट टेबल से प्राप्त किए जा सकते हैं।
मेरे टेस्ट में, निम्न प्रदर्शन डेटा (कुल IO टेबल देखें) प्राप्त किया गया था:
- MiB/s — 241 (लगभग 252 Mb/s, बुरा नहीं);
- IOPS — 3866 (पूरी तरह से अच्छा!);
- औसत विलंबता — 66.206 ms (काफी बड़ी विलंबता!)।
आप पढ़ने (रीड IO अनुभाग) या लिखने (राइट IO अनुभाग) ऑपरेशन के लिए व्यक्तिगत मान प्राप्त कर सकते हैं।
DiskSpd का उपयोग करके कई डिस्क या स्टोरेज LUN का परीक्षण करके, आप उनकी तुलना कर सकते हैं या अपने कार्यों के लिए वांछित प्रदर्शन वाले ऐरे का चयन कर सकते हैं।
PowerShell का उपयोग करके स्टोरेज IOPS, थ्रूपुट और विलंबता कैसे मापें?
मुझे एक PowerShell स्क्रिप्ट मिली (मिकाएल निस्ट्रॉम, Microsoft MVP द्वारा), जो अनिवार्य रूप से SQLIO.exe उपयोगिता (फ़ाइल स्टोरेज प्रदर्शन परीक्षणों का एक सेट) का एक ऐड-ऑन है।
नोट. दिसंबर 2015 में, Microsoft ने इस टूल के लिए समर्थन समाप्त करने की घोषणा की और SQLIO को अधिक सार्वभौमिक टूल Diskspd से बदल दिया, और अपनी वेबसाइट से SQLIO वितरण फ़ाइलों को हटा दिया। इसलिए आपको sqlio.exe को स्वयं खोजना होगा, या इसे हमारी वेबसाइट से डाउनलोड करना होगा (यह PowerShell स्क्रिप्ट के साथ आर्काइव में स्थित है)।
तो, 2 फ़ाइलों वाला आर्काइव डाउनलोड करें: SQLIO.exe और DiskPerformance.ps1 (disk_perf_iops.ZIP — 74 KB) और इसे किसी फ़ोल्डर में निकालें।

डिस्क प्रदर्शन और IOPS का अनुमान लगाने के लिए PowerShell स्क्रिप्ट चलाने का एक उदाहरण:
.\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— यहां आप उस डिस्क को निर्दिष्ट करते हैं जिसके लिए आप प्रदर्शन मापना चाहते हैं और डिस्क पर वह फ़ोल्डर जिसमें टेस्ट फ़ाइल बनाई जाएगी। आप नेटवर्क साझा फ़ोल्डर (SMB) का UNC पथ भी निर्दिष्ट कर सकते हैं;-TestMode Get-LargeIO— इनपुट-आउटपुट माप के दो विकल्प हैं। Get-SmallIO IOPS मापने की अनुमति देता है, और Get-LargeIO डेटा ट्रांसफर दर मापता है। SmallIO और LargeIO तर्कों के बीच अंतर दर मापते समय 8 KB और 512 KB के ब्लॉक आकार में है, और एक्सेस प्रकार, रैंडम या अनुक्रमिक, क्रमशः;-FastMode True— फास्टमोड में, प्रत्येक टेस्ट 10 सेकंड चलता है, अन्यथा इसमें 60 सेकंड लगते हैं;-RemoveTestFile True— टेस्ट समाप्त होने के बाद टेस्ट फ़ाइल हटाएं;-OutputFormat Out-GridView— टेस्ट परिणाम या तो PowerShell कंसोल (Format-Table) में या अलग ग्राफ़िक चार्ट विंडो (Out-Gridview) में प्रदर्शित किए जा सकते हैं।

हमारे मामले में (HP MSA 2040 पर VMFS डेटास्टोर पर vmdk वर्चुअल डिस्क का उपयोग किया जाता है जो SAN पर जुड़ा हुआ है) डिस्क ऐरे ने लगभग 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,000 IOPS की आवश्यकता होती है;
- एक सामान्य Windows एप्लिकेशन सर्वर 10-100 उपयोगकर्ताओं के लिए 10-40 IOPS की आवश्यकता होती है।