इस लेख में हम चर्चा करेंगे कि लिनक्स में डिस्क या स्टोरेज ऐरे के प्रदर्शन की जांच कैसे करें। आईओपीएस (इनपुट/आउटपुट ऑपरेशंस प्रति सेकेंड) इनपुट-आउटपुट ऑपरेशंस की संख्या है जो डेटा स्टोरेज सिस्टम प्रति सेकेंड करता है (यह एक डिस्क, RAID सरणी या बाहरी स्टोरेज डिवाइस में एलयूएन हो सकता है)। सामान्य तौर पर, IOPS उन ब्लॉकों की संख्या को संदर्भित करता है जिन्हें मीडिया से पढ़ा या लिखा जा सकता है।
अधिकांश डिस्क निर्माता नाममात्र IOPS मान निर्दिष्ट करते हैं, लेकिन वास्तव में इनकी गारंटी नहीं है। प्रोजेक्ट शुरू करने से पहले अपने स्टोरेज सबसिस्टम के प्रदर्शन को समझने के लिए, यह अधिकतम IOPS मान प्राप्त करने के लायक है जिसे आपका स्टोरेज संभाल सकता है।
भंडारण बेंचमार्किंग के लिए FIO (लचीला I/O) टूल का उपयोग करना
Linux में डिस्क IOPS के प्रदर्शन को मापने के लिए, आप fio . का उपयोग कर सकते हैं (उपकरण EPEL रिपॉजिटरी में CentOS/RHEL के लिए उपलब्ध है)। इसलिए, RHEL या CentOS में fio स्थापित करने के लिए, yum (dnf) पैकेज मैनेजर का उपयोग करें:
# yum install epel-release -y
# yum install fio -y
या डेबियन या उबंटू में उपयुक्त:
# apt-get install fio
फिर आप परीक्षण करने के लिए डिस्क की पहचान करने के लिए। यह परीक्षण उस निर्देशिका में पढ़ने/लिखने के संचालन के द्वारा किया जाता है जिस पर आपकी डिस्क या LUN माउंट किया गया है।
आइए विभिन्न डिस्क लोड परिदृश्यों में कई प्रकार के डिस्क IOPS प्रदर्शन परीक्षण करते हैं (एक परीक्षण मोड जिसे आप होस्ट किए गए ऐप लॉजिक और किसी प्रोजेक्ट के सामान्य बुनियादी ढांचे के आधार पर चुनते हैं)।
रैंडम रीड/राइट ऑपरेशन टेस्ट
परीक्षण चलाते समय, एक 8 जीबी फ़ाइल बनाई जाएगी। फिर fio 4KB . को पढ़/लिखेगा 75/25% . के साथ ब्लॉक (एक मानक ब्लॉक आकार) पढ़ने और लिखने के संचालन की संख्या से और प्रदर्शन को मापें। आदेश इस प्रकार है:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75
मैंने अपना पहला परीक्षण एक सरणी पर चलाया जिसमें दो SSD . शामिल थे s और अच्छे परिणाम मिले:
- पढ़ें: 3280MiB/s, IOPS औसत 83000
- लिखें: 110MiB/s, IOPS औसत 28000
चूंकि हमने एक संयुक्त पठन/लेखन परीक्षण चलाया है, इसलिए अलग-अलग परीक्षणों के लिए मान अधिक होंगे।
इसकी तुलना में, मैंने प्रदर्शन को SATA . पर मापा ड्राइव:
- पढ़ें: आईओपीएस=430, बीडब्ल्यू=1.7 एमआईबी/एस
- लिखें: IOPS=143, BW=0.6 MiB/s
बेशक, एचडीडी के नतीजे एसएसडी की तुलना में खराब हैं।
रैंडम रीड ऑपरेशन टेस्ट
केवल रैंडम रीड ऑपरेशंस के लिए डिस्क प्रदर्शन को मापने के लिए, निम्न कमांड चलाएँ:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread
कमांड के अंतिम भाग को —readwrite=randread
।
जैसा कि मैंने पहले बताया, पढ़ने/लिखने का प्रदर्शन अलग से मापने पर बेहतर होगा:
READ: IOPS=150k, BW=584MiB/s (612MB/s)
रैंडम राइट ऑपरेशन टेस्ट
रैंडम राइट ऑपरेशंस के लिए डिस्क प्रदर्शन को मापने के लिए, यह कमांड चलाएँ:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=fiotest --bs=4k --iodepth=64 --size=8G --readwrite=randwrite
WRITE: IOPS=84.7k, BW=331MiB/s (347MB/s)
अच्छे SSD पर लिखने का कार्य निष्पादन भी बहुत अधिक होता है। रीड ऑपरेशन टेस्ट की तरह, मिश्रित परीक्षण की तुलना में अंतर 200-250 MiB/s और 50000 IOPS तक पहुंच जाता है।
यदि आप आधिकारिक निर्माता दस्तावेज (ये इंटेल एसएसडी हैं) का संदर्भ लेते हैं, तो यह कहना सुरक्षित है कि मान सत्य हैं।
Fio कॉन्फ़िग फ़ाइल उदाहरण
Fio इंटरैक्टिव कमांड का उपयोग करके और परीक्षण के लिए पहले से तैयार कॉन्फ़िगरेशन फ़ाइलों के साथ डिस्क प्रदर्शन की जांच करने की अनुमति देता है। इस विकल्प का उपयोग करने के लिए, एक फ़ाइल बनाएँ:
# nano read.fio
और इसमें निम्नलिखित सामग्री जोड़ें:
[global] rw=randread size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgread] rw=randread iodepth=64
फिर परीक्षण शुरू करें:
# fio read.fio
परीक्षण डिस्क के पढ़ने के प्रदर्शन को मापेगा। लेखन प्रदर्शन का परीक्षण करने के लिए, निम्न कॉन्फ़िग फ़ाइल का उपयोग करें:
[global] rw=randwrite size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgwrite] rw=randwrite iodepth=64
आईओपिंग का उपयोग करके डिस्क विलंबता मापना
IOPS के अलावा, एक और महत्वपूर्ण पैरामीटर है जो आपके स्टोरेज की गुणवत्ता को दर्शाता है:यह विलंबता है। विलंबता एक इनपुट/आउटपुट अनुरोध विलंब है जो भंडारण तक पहुंच का समय निर्धारित करता है (मिलीसेकंड में मापा जाता है)। विलंबता जितनी अधिक होगी, आपके ऐप को आपकी डिस्क से डेटा प्राप्त होने तक उतना ही अधिक इंतजार करना होगा। विलंबता मान 20 ms से अधिक विशिष्ट डेटा संग्रहण प्रणालियों के लिए खराब माना जाता है।
Linux में डिस्क विलंबता की जांच करने के लिए, ioping उपकरण का उपयोग किया जाता है:
# yum install ioping -y
# apt-get install ioping
अपनी डिस्क के लिए विलंबता परीक्षण चलाएँ (20 अनुरोध चलाए जाते हैं):
# ioping -c 20 /tmp/
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=1 time=1.55 ms (warmup) ...................... 4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=19 time=176.3 us (fast) 4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=20 time=356.9 us --- /tmp/ (ext4 /dev/md126p5) ioping statistics --- 19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us
औसत मान 298.7 हमें . है (माइक्रोसेकंड), इसलिए हमारे मामले में औसत विलंबता 0.3 ms . है , यह बहुत अच्छा है।
विलंबता मान हमें . में निर्दिष्ट किया जा सकता है (माइक्रोसेकंड) या ms (मिलीसेकंड)। यूएस वन से एमएस वैल्यू प्राप्त करने के लिए, इसे 1,000 से विभाजित करें।इसलिए आप प्रोजेक्ट लॉन्च करने से पहले अपने सर्वर पर स्टोरेज लोड टेस्ट कर सकते हैं और उच्चतम प्रदर्शन मूल्यों की जांच कर सकते हैं। हालाँकि, परीक्षण इस बात की गारंटी नहीं देता है कि आपकी डिस्क सरणी या डिस्क लगातार समान प्रदर्शन दिखाएगी, लेकिन यह किसी प्रोजेक्ट के प्रारंभिक चरण में परीक्षण करने के लायक है। इस लेख में विंडोज़ में आईओपीएस का परीक्षण करने का तरीका जानें।