मैं लिनक्स के साथ कुछ सन हार्डवेयर पर स्टोरेज सेटअप को ऑप्टिमाइज़ करने की कोशिश कर रहा हूँ। किसी भी विचार की बहुत सराहना की जाएगी।
हमारे पास निम्नलिखित हार्डवेयर हैं:
- सन ब्लेड X6270
- 2 * LSISAS1068E SAS नियंत्रकों
- 2 * सूर्य J4400 JBODs 1 टीबी डिस्क के साथ (24 डिस्क प्रति JBOD)
- फेडोरा कोर 12
- एफसी 13 से 2.6.33 रिलीज कर्नेल (एफसी 12 से नवीनतम 2.6.31 कर्नेल के साथ भी प्रयास किया गया, वही परिणाम)
एसएएस हार्डवेयर के लिए डेटाशीट यहां दी गई है:
http://www.sun.com/storage/storage_networking/hba/sas/PCIe.pdf
यह PCI एक्सप्रेस 1.0a, 8x लेन का उपयोग कर रहा है। 250 एमबी / सेकंड प्रति लेन की बैंडविड्थ के साथ, हमें 2000 एमबी / सेकंड प्रति एसएएस कंट्रोलर करने में सक्षम होना चाहिए।
प्रत्येक नियंत्रक प्रति पोर्ट 3 जीबी / सेक कर सकता है और इसमें दो 4 पोर्ट PHY हैं। हम एक नियंत्रक से एक JBOD के लिए दोनों PHYs कनेक्ट करते हैं। तो JBOD और कंट्रोलर के बीच में हमारे पास 2 PHY * 4 SAS पोर्ट * 3 Gb / sec = 24 Gb / sec of बैंडविड्थ है, जो PCI एक्सप्रेस बैंडविड्थ से अधिक है।
लेखन कैशिंग सक्षम होने और बड़े लिखने के दौरान, प्रत्येक डिस्क लगभग 80 एमबी / सेकंड (डिस्क की शुरुआत के पास) को बनाए रख सकती है। 24 डिस्क के साथ, इसका मतलब है कि हमें जेबीओडी के अनुसार 1920 एमबी / सेकंड करने में सक्षम होना चाहिए।
बहुपथ { rr_min_io 100 यूआईडी ० path_grouping_policy मल्टीबस फेलबैक मैनुअल path_selector "राउंड-रॉबिन 0" rr_weight प्राथमिकताएँ उर्फ सोमालियास no_path_retry कतार मोड 0644 गिद ० wwp के रूप में }
मैंने rr_min_io के लिए 50, 100, 1000 के मूल्यों की कोशिश की, लेकिन इससे बहुत फर्क नहीं पड़ता।
Rr_min_io के अलग-अलग होने के साथ-साथ मैंने dd को शुरू करने के बीच कुछ देरी को जोड़ने की कोशिश की, ताकि एक ही समय में एक ही PHY पर लिखने से सभी को रोका जा सके, लेकिन इससे कोई फ़र्क नहीं पड़ा, इसलिए मुझे लगता है कि I / O का ठीक से प्रसार नहीं हो रहा है।
/ Proc / interrupts के अनुसार, SAS नियंत्रक एक "IR-IO-APIC-fasteoi" रुकावट योजना का उपयोग कर रहे हैं। किसी कारण से मशीन में केवल कोर # 0 इन इंटरप्ट को संभाल रहा है। मैं प्रत्येक एसएएस नियंत्रक के लिए व्यवधान को संभालने के लिए एक अलग कोर निर्दिष्ट करके प्रदर्शन को थोड़ा सुधार सकता हूं:
गूंज 2> / proc / irq / 24 / smp_affinity इको 4> / proc / irq / 26 / smp_affinity
डिस्क पर लिखने के लिए dd का उपयोग करने से "फ़ंक्शन कॉल इंटरप्ट" उत्पन्न होता है (कोई भी विचार नहीं है कि ये क्या हैं), जो कि कोर # 4 द्वारा संभाला जाता है, इसलिए मैं अन्य प्रक्रियाओं को भी इस कोर से दूर रखता हूं।
मैं 48 dd (प्रत्येक डिस्क के लिए एक) चलाता हूं, उन्हें कोर को असाइन करने से रोकता हूं ताकि इस तरह से व्यवधान न हो:
कार्यपत्र -c somecore dd if = / dev / zero of = / dev / mapper / mpathx oflag = direct bs = 128M
oflag = डायरेक्ट किसी भी तरह के बफर कैश को शामिल होने से रोकता है।
मेरी कोई भी कोर अधिकतम नहीं लगती। इंटरप्ट्स से निपटने वाले कोर ज्यादातर निष्क्रिय होते हैं और अन्य सभी कोर I / O पर इंतजार कर रहे हैं क्योंकि एक उम्मीद करेगा।
Cpu0: 0.0% us, 1.0% sy, 0.0% ni, 91.2% id, 7.5% wa, 0.0% hi, 0.2% si, 0.0% st Cpu1: 0.0% us, 0.8% sy, 0.0% ni, 93.0% id, 0.2% wa, 0.0% hi, 6.0% si, 0.0% st Cpu2: 0.0% us, 0.6% sy, 0.0% ni, 94.4% id, 0.1% wa, 0.0% hi, 4.8% si, 0.0% st Cpu3: 0.0% us, 7.5% sy, 0.0% ni, 36.3% id, 56.1% wa, 0.0% hi, 0.0% si, 0.0% st Cpu4: 0.0% us, 1.3% sy, 0.0% ni, 85.7% id, 4.9% wa, 0.0% hi, 8.1% si, 0.0% st Cpu5: 0.1% us, 5.5% sy, 0.0% ni, 36.2% id, 58.3% wa, 0.0% hi, 0.0% si, 0.0% st Cpu6: 0.0% us, 5.0% sy, 0.0% ni, 36.3% id, 58.7% wa, 0.0% hi, 0.0% si, 0.0% st Cpu7: 0.0% us, 5.1% sy, 0.0% ni, 36.3% id, 58.5% wa, 0.0% hi, 0.0% si, 0.0% st Cpu8: 0.1% us, 8.3% sy, 0.0% ni, 27.2% id, 64.4% wa, 0.0% hi, 0.0% si, 0.0% st Cpu9: 0.1% us, 7.9% sy, 0.0% ni, 36.2% id, 55.8% wa, 0.0% hi, 0.0% si, 0.0% st Cpu10: 0.0% us, 7.8% sy, 0.0% ni, 36.2% id, 56.0% wa, 0.0% hi, 0.0% si, 0.0% st Cpu11: 0.0% us, 7.3% sy, 0.0% ni, 36.3% id, 56.4% wa, 0.0% hi, 0.0% si, 0.0% st Cpu12: 0.0% us, 5.6% sy, 0.0% ni, 33.1% id, 61.2% wa, 0.0% hi, 0.0% si, 0.0% st Cpu13: 0.1% us, 5.3% sy, 0.0% ni, 36.1% id, 58.5% wa, 0.0% hi, 0.0% si, 0.0% st Cpu14: 0.0% us, 4.9% sy, 0.0% ni, 36.4% id, 58.7% wa, 0.0% hi, 0.0% si, 0.0% st Cpu15: 0.1% us, 5.4% sy, 0.0% ni, 36.5% id, 58.1% wa, 0.0% hi, 0.0% si, 0.0% st
इस सब को देखते हुए, "dstat 10" को चलाने के द्वारा रिपोर्ट की गई थ्रूपुट 2200-2300 एमबी / सेकंड की सीमा में है।
ऊपर दिए गए गणित को देखते हुए मुझे 2 * 1920 ~ = 3600+ एमबी / सेकंड की सीमा में कुछ की उम्मीद होगी।
किसी को भी मेरे लापता बैंडविड्थ चला गया है, जहां किसी भी विचार है?
धन्यवाद!