डिस्क IOPS और सर tps के बीच संबंध


13

मैं 32-बिट CentOS 6.2 पर चलने वाले अपने आवेदन की IOPS आवश्यकताओं का अनुमान लगाने की कोशिश कर रहा हूं। मैंने SATA डिस्क के साथ एक मशीन पर कुछ माप लेना शुरू किया और मैं IOPS और sar द्वारा मापे गए tps के बीच के अंतर से काफी भ्रमित हूं।

विकिपीडिया SATA डिस्क के अनुसार 75-100 IOPS करना चाहिए। रैंडम एक्सेस टेस्ट के लिए आईओपी उपयोगिता इसकी पुष्टि करती है:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

लेकिन sar द्वारा उत्पादित tps मान बहुत अधिक (/ dev / sda) हैं:

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

यह वास्तव में बुरा नहीं है अगर यह भार अनुक्रमिक है (विभिन्न ब्लॉक आकारों के साथ dd) या यादृच्छिक अभिगम (आयोडिंग), मूल्य अभी भी समान है। मैंने सोचा था कि वास्तव में IOPS tps है और मैं इसे बड़ी मात्रा में स्थानांतरित होने के साथ नीचे जाने की उम्मीद करूंगा।

तो वास्तव में tps मूल्य का क्या मतलब है? और यह IOPS से कैसे संबंधित है?


2
मेरा मानना ​​है कि आप डिस्क कैश के कारण TPS मूल्य में उच्च IOPS देख रहे हैं।
सिजयोज़

1
ठीक है, मैं वास्तव में कैश भरने के लिए 256kB ब्लॉक के साथ dd के माध्यम से एक 10GB फ़ाइल की कोशिश की और ~ 90 सेकंड tps बूँदें ~ 200 करने के लिए, तो शायद तुम सही हो। लेकिन फिर भी is० और २०० काफी अंतर है ... क्या यह संभव है कि आईओपीएस को पढ़ना और लिखना अलग हो? और क्या इस मूल्य से आवश्यक IOPS का पता लगाने का कोई तरीका है?
21

1
क्या आप बता सकते हैं कि आपके IOPS के बाद क्यों हैं? पढ़ना और लिखना जूते की एक अलग जोड़ी है जो एक ही बर्तन में फेंक दिया जाता है।
निल्स

इसका कारण मुझे न्यूनतम HW आवश्यकताओं का वर्णन करना है। मेरे पास एक सर्वर है जो नेटवर्क पर डेटा प्राप्त करता है (हम यहां निरंतर बिटरेट मान सकते हैं) और डिस्क पर डेटा प्राप्त करते हैं। डेटा क्रमिक रूप से फ़ाइलों को लिखा जाता है, लेकिन समानांतर में उनमें से सैकड़ों (उदाहरण 800) हो सकते हैं। मुझे पता चला है कि जब ग्राहकों की संख्या कुछ बिंदु तक पहुँच जाती है तो मुझे बड़े आयोवाइट्स मिलने लगते हैं। वास्तविक डिस्क थ्रूपुट जो मैं प्राप्त कर सकता हूं वह लगभग 25MB / s है, जो काफी कम है, उच्च बिटरेट वाले कम ग्राहक 35MB / s, 130MB / s के बारे में शुद्ध अनुक्रमिक कर सकते हैं। इसलिए मुझे लगता है कि IOPS यहाँ क्या मायने रखता है ...
pystole

जवाबों:


6

लेन-देन एकल IO- कमांड (फ़ोकस ब्लॉक / राइट ब्लॉक) हैं जो रॉ-डिस्क (आपके उदाहरण dm-0 में) को लिखे जाते हैं। लिनक्स-कर्नेल उन आदेशों को बेहतर क्रम में क्रमबद्ध करने की कोशिश करता है या उन्हें अधिक कुशल कमांडों में संपीड़ित करने की कोशिश करता है (जैसे: एक ब्लॉक प्राप्त करने के बजाय एक बार में दो ब्लॉक प्राप्त करें और इस एक के बाद दूसरा ब्लॉक प्राप्त करें)। ये वे लेनदेन हैं जो डिस्क-नियंत्रक (एसडीए के लिए टीपीएस) पर जाते हैं।

अच्छे नियंत्रकों के पास अपने स्वयं के तर्क होते हैं जो लेनदेन की वास्तविक संख्या को कम करते हैं।

लेन-देन SCSI- कमांड हो सकता है "2 GB को crontoller 1 लक्ष्य 2 lun 3 को सेक्टर 22 से शुरू करें) लिखें। जैसा कि आप देख सकते हैं कि इसे थ्रूपुट-नंबरों के साथ सीधे सहसंबंध में नहीं लाया जा सकता है।

आप जो कुछ भी कर रहे हैं वह निरंतर लिखने की दर है। आपके पास कारकों को सीमित करने वाले कुछ जोड़े हैं:

  • क्लाइंट-कनेक्शन: यदि नेटवर्क गीगाबिट है, तो आपके पास 100 एमबी / एस से अधिक इनपुट कभी नहीं होगा
  • डिस्क-नियंत्रक: यदि यह एक 3 जीबी नियंत्रक है, तो आपके पास कभी भी 300 एमबी / एस से अधिक नहीं होगा
  • डिस्क: निरंतर लेखन प्रदर्शन के लिए निर्माताओं के मूल्य को देखें
  • फाइलसिस्टम: ओएस को डेटा प्रोसेस करने की आवश्यकता के बाद से थोड़ा ओवरहेड होता है - रैम-डिस्क में परीक्षण करें ...

आपके सिस्टम के लिए मेरा अनुमान है: एक अच्छा हार्डवेयर-रेड-कंट्रोलर प्राप्त करें जो 10 या 5 छापे करने में सक्षम हो और कम से कम 6 फास्ट (15k) डिस्क प्राप्त करें।

पेशेवर उपयोग के लिए एसएटीए के बजाय एसएएस का उपयोग करें।


ठीक है, आप सही हैं IOPS को लिखने के लिए कोई मतलब नहीं है क्योंकि इसमें बहुत सारे कैश, रीऑर्डरिंग और मर्ज शामिल हैं। समापन ... धन्यवाद।
pystole

5

कृपया इस बात से भी अवगत रहें कि TPSमान रीड और राइट का प्रतिनिधित्व करता है, आप -xविस्तारित दृश्य के लिए स्विच का उपयोग कर सकते हैं जहाँ रीड और राइट अलग हो जाते हैं (आर / एस = आईओपीएस पढ़ें, डब्ल्यू / एस = आईओपीएस लिखें):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89

हां आप ठीक हैं। लेकिन मेरे मामले में लगभग 100% लिखते हैं, पढ़ता लगभग कोई भी नहीं है।
pystole
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.