सर्वर हमेशा अधिकतम पर क्यों नहीं चलते?


12

यह एक ऐसा सवाल है जो मुझे कुछ समय के लिए परेशान कर रहा है, और मुझे इसके बारे में बात करने वाले ऑनलाइन कुछ भी नहीं मिल रहा है। मेरे पास एक सर्वर है जो VMware हाइपरवाइजर ESXi चला रहा है। जब मैं इस पर वर्चुअल मशीन बूट करता हूं, तो वे आमतौर पर बूट करने में 2-3 मिनट लगते हैं; बहुत लंबे समय तक नहीं, लेकिन तात्कालिक नहीं। हालाँकि, जब मैं सर्वर पर प्रदर्शन लॉग देखता हूं, न तो प्रोसेसर, रैम, या डिस्क का उपयोग लगभग 100% है; आमतौर पर वे लगभग 60% -80% औसत होते हैं इसलिए यदि सर्वर के पास काम करना है, तो यह 100% पर क्यों नहीं करता है?

यह मुझे लगता है कि किसी भी समय, प्रदर्शन को सीमित करने वाले घटक को 100% पर चलना चाहिए। उदाहरण के लिए, अगर मेरे पास वास्तव में धीमी गति से हार्ड ड्राइव है, तो इसे लगभग हमेशा 100% पर चलना चाहिए। इसलिए, कम से कम एक क्षेत्र (प्रोसेसर, रैम, डिस्क और नेटवर्क) हमेशा 100% पर होना चाहिए, जब तक कि सर्वर पूरी तरह निष्क्रिय न हो।

यह मामला क्यों नहीं है?


पुराने लिनक्स वितरण, सिस्टमड पर आधारित नहीं, कुशलता से स्टार्टअप को समानांतर नहीं कर सकता। * बीएसडी अभी भी इससे पीड़ित हैं। एक आधुनिक लिनक्स डिस्ट्रो को बूट करें और देखें कि यह कैसे भिन्न होता है।
माइकल हैम्पटन

जवाबों:


18

विलंबता एक कारण होगा। "डिस्क के बीच अंतराल मुझे यह डेटा देता है जिसकी मुझे आवश्यकता है इससे पहले कि मैं कुछ और कर सकूं" और जिस समय डेटा वापस मिलेगा वह उस समय के लिए CPU निष्क्रिय छोड़ देगा।

संसाधन शायद 100% पर चलते हैं, लेकिन बहुत संक्षिप्त अवधि के लिए। एक ऑपरेटिंग सिस्टम बूटिंग "प्रक्रिया का सामान्य पैटर्न का पालन करेगा या कुछ तय करेगा, डिस्क से कुछ प्राप्त करेगा, मेमोरी में कुछ करेगा, एक डिवाइस के साथ कुछ करेगा", प्रति सेकंड कई बार दोहराएगा। इसलिए जब आप 2 सेकंड की अवधि में 25% पर डिस्क देखते हैं, तो इसका मतलब है कि यह 0.5 सेकंड के लिए 100% पर चल रहा है, तो बाकी समय को बेकार कर दें।

जैसा कि EEAA ने बताया कि मल्टीकोर सिस्टम इसे थोड़ा और जटिल बनाते हैं। सीपीयू पर एक सॉफ्टवेयर का एक थ्रेडेड टुकड़ा जो चार धागों को निष्पादित कर सकता है, केवल 25% पूरी गति से चल सकता है। यहां तक ​​कि मल्टीथ्रेड सॉफ्टवेयर भी शायद ही कभी 100% हिट कर सकता है, क्योंकि डेटा को हार्ड ड्राइव से, रैम (RAM) से, कैश से सीपीयू तक प्रवाहित करना होता है। उस पाइपलाइन को पूरा रखना मुश्किल है, और वीडियो एन्कोडिंग जैसे पूर्वानुमानित कार्यभार के साथ अधिकतर होता है। इस स्थिति में ऑपरेटिंग सिस्टम रीड पैटर्न को देख सकता है और आवश्यक होने से पहले डेटा को पुनः प्राप्त कर सकता है, इसे उपयुक्त कैश में डाल सकता है, जैसे कि रैम में डिस्क कैश।


16

आप इस बारे में बहुत ही सरल तरीके से सोच रहे हैं, जिसके कारण आप कुछ गलत धारणाएँ बना रहे हैं, जिन्हें मैं दूर करने की कोशिश करूँगा।

सबसे पहले, और संभवतः सबसे अधिक, एक मल्टीकोर सिस्टम पर, सीपीयू के उपयोग को समझने के लिए आपको इस बात का ध्यान रखना होगा कि क्या प्रक्रिया लोड मल्टीथ्रेडेड है, और कई कोर का लाभ उठाने के लिए डिज़ाइन किया गया है। यदि यह मामला नहीं है, तो चल रही प्रक्रियाओं के मिश्रण के आधार पर, आप कभी भी 100% उपयोग नहीं देख सकते हैं। कभी।

दूसरा, आपको IO डिवाइस के प्रदर्शन पर विचार करने की आवश्यकता है। उदाहरण के लिए, आपका सिस्टम कैसे जानता है, आपके डिवाइस कितने IOps के लिए सक्षम हैं? यह नहीं है आपके द्वारा देखने के लिए एक अधिक सार्थक मीट्रिक iowaitबूट के दौरान आपका मूल्य है (जो बूट प्रक्रिया के दौरान प्राप्त करना मुश्किल हो सकता है) या बूट के दौरान डिस्क कतार / विलंबता (जो आपके हाइपरवाइजर से प्राप्त करना आसान होना चाहिए)। यदि आप कतार या विलंबता स्पाइक देखते हैं, तो यह संभावना है कि आपके IO उपकरण आपके प्रदर्शन समस्याओं के लिए एक महत्वपूर्ण कारक हैं।


11

मैं लगभग 20 वर्षों से सर्वर के साथ काम कर रहा हूं, इसका आमतौर पर कोई अच्छी बात नहीं है जब कोई घटक हर समय 100% पर चल रहा हो।

उदाहरण के लिए, आपको बताएंगे कि आपके पास एक SQL डेटाबेस है जिसे आप डिस्क पर स्वैप नहीं करना चाहते हैं बल्कि इसके बजाय पूरी तरह से मेमोरी से बाहर चलाना चाहते हैं।

यदि आपका डेटाबेस 24GB है और OS को 8GB की आवश्यकता है, तो आप केवल 32GB RAM को मशीन के लिए आवंटित नहीं करना चाहेंगे, बहुत सारी "चीजें" हैं जो गलत हो सकती हैं, खराब कोड, DDOS, भारी एप्लिकेशन उपयोग, जो जानता है, कोई हेड रूम नहीं होने से आपको कैसे पता चलेगा कि सर्वर में दिक्कत है?

हमारे डेटा सेंटर में लगभग 2000 सर्वर हैं, हम उन सभी को लगभग 75% CPU और RAM पर देखना पसंद करते हैं, hhd स्पेस हमारे SAN पर है ताकि मोम की एक पूरी तरह से अलग गेंद हो। हमारे पास यह बताने के लिए भी अलर्ट हैं कि जब वे 85% सीपीयू या रैम से टकराते हैं, और अलार्म हमें बताते हैं कि वे 90% हिट करते हैं।


मुझे लगता है कि आप यहां से थोड़ा दूर हो गए। मैंने कहा कि मैं वर्चुअल मशीन चला रहा हूं, इसलिए एक निरंतर लोड होता है जो डेटाबेस सर्वर से बहुत अलग होता है, जो कि रिक्वेस्ट मिलने पर और संसाधनों को आवंटित करने पर चलता है। मैं इस बात से अधिक चिंतित था कि जो भी सीमित प्रदर्शन कारक है, न कि उन संसाधनों को कैसे आवंटित किया जाए। लेकिन उत्तर के लिए धन्यवाद!
कर्नेल स्टर्न्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.