ट्यूनिंग एनएफएस क्लाइंट / सर्वर स्टैक


10

मेरे पास एक CentOS 5 VMWare सर्वर है जो डिस्क छवियों को रखने वाले NFS पर एक OpenSolaris 2009.06 मशीन से जुड़ता है। मेरी आभासी मशीनें धीमी आईओ से बंधी हुई लगती हैं इसलिए मैं कनेक्शन को अनुकूलित करने के लिए वह सब कुछ करना चाहूंगा जो मैं कर सकता हूं।

मैं उत्पादन प्रणाली पर थ्रूपुट को मापने के सर्वोत्तम तरीके के बारे में सुनिश्चित नहीं हूं, लेकिन dd bs=1024k count=400शो लोकल (ओपनसोलारिस) का उपयोग करते हुए कुछ अवैज्ञानिक परीक्षण ~ 1.6 जीबी / एस और रिमोट (सेंटोस) लिखते हैं ~ 50 एमबी / एस। मुझे लगता है कि ये वास्तव में 7 वीएम के कनेक्शन पर चलने के बाद से जो मैं कर रहा हूं उससे कम है।

वर्तमान में, 2 मशीनें प्रत्यक्ष रूप से जुड़ी हुई हैं, जंबो फ्रेम के साथ दोनों NIC (MTU = 9000) पर सक्षम हैं। इसके अलावा, कोई अनुकूलन नहीं किया गया है। NFS माउंट / निर्यात चूक का उपयोग कर रहा है।

प्रदर्शन में सुधार के लिए मुझे कहां से घुटने मोड़ने शुरू करने चाहिए?


थ्रूपुट बहुत ज्यादा मायने नहीं रखता। OpenSolaris चलाने वाले सिस्टम पर अंतर्निहित हार्डवेयर विनिर्देश क्या है? आपके पास कितने डिस्क / स्पिंडल हैं? कितनी RAM?
20

4 जीबी रैम के साथ एक कंट्रोलर पर 2 raidz1 पूल में फैले 12 डिस्क। यदि थ्रूपुट कोई मायने नहीं रखता है, तो मुझे किस मीट्रिक को देखना चाहिए?
Sysadminicus

बिल्ली / खरीद / mounts क्या करता है | लिनक्स क्लाइंट पर grep Solaris_server कहते हैं? लिनक्स के विभिन्न संस्करणों में अलग-अलग डिफ़ॉल्ट माउंट विकल्प हैं :(
जेम्स

10.10.1.1:/tank/vm / vm nfs rw, vers = 3, rsize = 1048576, wsize = 1048576, कठोर, प्रोटो = tcp, टाइमो = 600, रिट्रान्स - 2, सेकंड = sys, addr = 10.10.1.1 0 0
सियासडिमेनिकस

Solaris 10 के कुछ संस्करणों के साथ , nfs3 अस्थिर था। यदि आप nfs4 पर जा सकते हैं तो आपको कुछ सुधार दिखाई दे सकते हैं। लेकिन, जैसा कि अन्य टिप्पणीकारों ने कहा है, एक बड़ी कड़ी में 50 एमबी / एस को देखना सबसे ज्यादा है जिसे आप देख सकते हैं
वॉरेन

जवाबों:


2

बस स्पष्ट करने के लिए, आपको एक Gb ईथरनेट कनेक्शन पर NFS के साथ 50MB / सेकंड मिल रहा है?

और होस्ट सर्वर VMOS सर्वर स्थापित के साथ CentOS चला रहा है, जो बदले में 7 VMs चल रहा है? क्या VMware ESXi के बजाय CentOS और VMware सर्वर संयुक्त के साथ एक विशेष कारण है जो एक उच्च प्रदर्शन समाधान है?

50MB / सेकंड महान नहीं है, लेकिन यह बहुत नीचे नहीं है कि आप एक सिंगल Gb नेटवर्क केबल से क्या अपेक्षा करेंगे - एक बार जब आप NFS में डालते हैं तो लोगों ने ऊपर उल्लेख किया है कि आप शायद 70- को देख रहे हैं 80MB / सेक। की लाइन के साथ विकल्प:

"Ro, कठोर, विस्मयबोधक, retrans = 2, rsize = 32768, wsize = 32768, nfsvers = 3, टीसीपी"

सिस्टम के दोनों सिरों पर शायद आपके लिए उचित है।

इसके बाद के संस्करण को पाने के लिए आपको नेटवर्क कार्डों को जोड़ियों में देखने की जरूरत है, जो आपके थ्रूपुट को लगभग 90% बढ़ा दे। लिंक एकत्रीकरण के साथ सर्वश्रेष्ठ प्रदर्शन पाने के लिए आपको एक स्विच की आवश्यकता होगी जो 802.3ad का समर्थन करता है ।

एक बात मैं सुझाव देता हूं कि हालांकि ओपनसोलारिस बॉक्स पर आपका आईओ थ्रूपुट संदिग्ध रूप से उच्च लगता है, 12 डिस्क 1.6 जीबी / सेकंड के थ्रूपुट का समर्थन करने की संभावना नहीं है, और यह सोलारिस + जेडएफएस द्वारा भारी रूप से कैश किया जा सकता है।


हम CentOS + VMWare सर्वर का उपयोग कर रहे हैं क्योंकि यह मुफ़्त है। पिछले मैंने जाँच की थी कि ईएक्सएक्सआई काफी महंगा था। / Proc / mounts के अनुसार, rsize / wsize वर्तमान में 1048576 है। बस पुष्टि करने के लिए, आपको लगता है कि इन्हें 32k तक कम करने से गति बढ़ाने में मदद मिलेगी? मैं लिंक एकत्रीकरण की जाँच करूँगा। क्या मैं कनेक्शन के दोनों सिरों पर या केवल एक ही ऐसा करूंगा? मुझे लगता है कि आप आईओ के कैश होने के बारे में सही हैं। 512 एमबी से अधिक के मेरे डीडी को उछालने से ट्रांसफर रेट (50-120 एमबी / से लेकर) तक गिर जाता है।
सियासडिमेनिकस

मेरे पास अब इस प्रश्न का उत्तर स्वीकार करने के लिए UI में क्षमता नहीं है, लेकिन मैंने इसे अपग्रेड कर दिया है क्योंकि ऐसा लगता है जैसे लिंक एकत्रीकरण मेरी सबसे अच्छी शर्त है।
सेसाडामेनिकस

विलंबित उत्तर के लिए क्षमा करें, ESXi अब अपने मूल रूप में मुफ़्त है, और आपको एक प्रदर्शन को बढ़ावा देगा, लेकिन इसकी सीमित कार्यक्षमता है इसलिए यह आपके लिए सही नहीं हो सकता है। बहुत सुधार देखने के लिए आपको नेटवर्क लिंक के दोनों सिरों पर लिंक एकत्रीकरण करने की आवश्यकता होगी। आशा है कि यह आपके लिए काम करता है
इवान लेथ

1

हमारे आरएचईएल / सेंटो 5 मशीनों के लिए हम निम्नलिखित माउंट फ्लैग का उपयोग करते हैं

nfsvers = 3, टीसीपी, Timeo = 600, retrans = 2, rsize = 32768, wsize = 32768, कठोर, विस्मयबोधक, noatime

नए लिनक्स कर्नेल संस्करण भी बड़े rsize / wsize मापदंडों का समर्थन करते हैं, लेकिन EL5 में 2.6.18 कर्नेल के लिए 32k अधिकतम है।

NFS सर्वर (ओं) पर, कम से कम लिनक्स के लिए no_wdelay माना जाता है कि यदि आपके पास BBWC के साथ डिस्क कंट्रोलर है, तो इससे मदद मिलती है। इसके अलावा, यदि आप क्लाइंट्स पर noatime फ्लैग का उपयोग करते हैं, तो यह संभवत: सर्वर पर फाइल सिस्टम को noatime के साथ माउंट करने के लिए समझ में आता है।

और, जैसा कि पहले ही उल्लेख किया गया था, यूडीपी से परेशान नहीं हैं। उच्च गति नेटवर्क (1GbE +) के साथ एक छोटा, लेकिन गैर-शून्य है, एक क्रम संख्या रैपराउंड का मौका जिससे डेटा भ्रष्टाचार होता है। इसके अलावा, यदि पैकेट के नुकसान की संभावना है, तो टीसीपी यूडीपी से बेहतर प्रदर्शन करेगा।

यदि आप डेटा अखंडता के बारे में चिंता नहीं कर रहे हैं, तो, "async" निर्यात विकल्प एक प्रमुख प्रदर्शन में सुधार हो सकता है (async के साथ समस्या यह है कि सर्वर क्रैश होने पर आप डेटा खो सकते हैं)।

इसके अलावा, कम से कम लिनक्स सर्वर के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि आपके पास पर्याप्त एनएफएस सर्वर थ्रेड चल रहे हैं। डिफ़ॉल्ट 8 अभी बहुत कम है।


1

मैंने एक बार dell r710, 1 cpu, 4 GB RAM, 6 SATA डिस्क के साथ RAID-10 के साथ एक परीक्षण किया था। ग्राहक एक सूरज x2100 था, दोनों सेंटोस 5.3 के साथ और ऊपर वर्णित nfs params दोनों के साथ

"Ro, कठोर, विस्मयबोधक, retrans = 2, rsize = 32768, wsize = 32768, nfsvers = 3, टीसीपी"

noatime के साथ दोनों पक्षों पर मुहिम शुरू की।

मैं भी 256 के लिए nfsds तक टकरा गया और perc6 छापे नियंत्रक के लिए नोज शेड्यूलर का उपयोग किया। एक और बात मैंने छापा नियंत्रक के 64K धारी के आकार के विभाजन को संरेखित करने के लिए किया था।

तब मैंने dd के साथ nfs के प्रदर्शन को मापा - रीड्स के लिए मैं गिग पाइप भर सकता था लेकिन लिखने के लिए मैं केवल आपके लिए थोड़ा बेहतर परिणाम प्राप्त कर सकता था। Async सक्षम होने के साथ मुझे 70 से 80 MB / s मिल सकते हैं लेकिन async मेरे लिए कोई विकल्प नहीं था।

शायद तुम एक बड़ी कड़ी से nfs के साथ और अधिक नहीं मिल सकता है?


1

इसे आज़माएं: निम्न दो चरणों के साथ ओपनसेलरिस एनएफएस सर्वर पर अस्थायी रूप से ZFS इंटेंट लॉग (ZIL) को अक्षम करें

  1. echo zil_disable/W0t1 | mdb -kw
  2. परीक्षण विभाजन को फिर से माउंट करें

फिर दोबारा परीक्षण करें। आप यह सुनिश्चित करने के लिए ज़िल्डैट का उपयोग कर सकते हैं कि वास्तव में ज़िल का कोई और आईओ नहीं है। यदि परीक्षण तेजी से चलता है, तो आप जानते हैं कि प्रदर्शन समस्या का ZIL के साथ कुछ करना है। यदि यह अभी भी धीमी गति से चलता है तो आप जानते हैं कि ZIL अपराधी नहीं है और ZIL के लिए SSD का उपयोग करने से भी मदद नहीं मिलेगी। ZIL के बारे में अधिक जानकारी के लिए ZFS ईविल ट्यूनिंग गाइड देखें ।

एक अन्य विकल्प नेटवर्क ट्रैफ़िक (जैसे कि विंडशार्क) को कैप्चर करना और देखना होगा कि क्या कोई समस्याएँ हैं जैसे कि जंबो फ्रेम के साथ। सत्यापित करें कि तार पर पैकेट ऐसे दिखते हैं जैसे आप अपने कॉन्फ़िगरेशन से अपेक्षा करते हैं। क्या कोई खराब विखंडन हो रहा है? क्या रिट्रांसमिट हैं?


0

पेलोड के आकार को पढ़ना और लिखना मदद कर सकता है। विशेष रूप से जंबो फ्रेम के साथ संयोजन के रूप में।

मैं 32k को सबसे ज्यादा पसंद करता हूं।

rsize=32768,wsize=32768

यूडीपी परिवहन पर स्विच करना बेशक तेजी से टीसीपी है, क्योंकि यह ट्रांसमिशन कंट्रोल के ओवरहेड को बचाता है। लेकिन यह केवल विश्वसनीय नेटवर्क पर लागू होता है और जहां NFSv4 उपयोग में नहीं है।


ऐसा लगता है कि CentOS NFSv3 का उपयोग करके कनेक्ट हो रहा है। क्या हमारे उपयोग के मामले में NFSv4 का मूल्य है? मैं कहूंगा कि नेटवर्क बहुत विश्वसनीय है, क्योंकि दो एनआईसी के बीच एक क्रॉस-ओवर केबल है।
सेसाडामेनिकस

2
यूडीपी गंभीर रूप से परेशानी के लायक नहीं है। टीसीपी से चिपके रहे। मेरा सुझाव है कि आप ठीक से काम कर रहे v3 मिल NFSv4 टिल की कोशिश नहीं करेंगे।
जेम्स

0

ZFS आशय लॉग (ZIL) के लिए SSD का उपयोग करके ZFS पर NFS के प्रदर्शन में बहुत सुधार होता है क्योंकि इससे परिचालन की विलंबता कम हो जाती है। OpenSolaris NFS और ZFS मेलिंग सूचियों पर ZFS के प्रदर्शन पर VMWare NFS के बारे में इस थ्रेड में अधिक जानकारी है, जिसमें एक बेंचमार्क टूल भी शामिल है, यह देखने के लिए कि क्या ZIL प्रदर्शन अड़चन है।


0

FYI करें dd कमांड कैश और डिस्क को लिखेगी, इससे आप 1.6G / s जैसे क्रेजी नंबर प्राप्त कर सकते हैं क्योंकि आप RAM पर लिख रहे हैं और Solaris पर डिस्क नहीं है आप डिस्क को लिखने के लिए बाध्य करने के लिए "-oflag = सिंक" का उपयोग कर सकते हैं

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