SSD नक्स सिस्टम प्रदर्शन पर भारी लेखन गतिविधि


13

मैंने देखा है कि जब मैं भारी लेखन कार्य करता हूं, तो पूरा सिस्टम धीमा हो जाता है। इसे आगे बढ़ाने के लिए मैंने इसे (अपेक्षाकृत) कम-सीपीयू, उच्च डिस्क गतिविधि करने के लिए चलाया:

john -incremental > file_on_SSD

यह मेरे सिस्टम डिस्क पर एक फाइल के लिए प्रति सेकंड हजारों स्ट्रिंग्स के दसियों को पंप करता है।

जब यह ऐसा कर रहा होता है, तो माउस लैग, टीटीवाई अनुत्तरदायी हो जाता है, अनुप्रयोग "फीका" हो जाता है और आम तौर पर पूरा कंप्यूटर अनुपयोगी हो जाता है। जब मैं अंततः नियंत्रण + सी कर सकता हूं john, तो सिस्टम कुछ सेकंड के बाद पूरी ताकत पर वापस आ जाता है।

यह एक चरम उदाहरण है, लेकिन मेरे पास कुछ कम लेखन-गहन गतिविधियों के साथ समान समस्याएं हैं जैसे कि तेज़ स्रोतों से बड़ी फ़ाइलों की प्रतिलिपि बनाना या ट्रांसकोडिंग।

मेरा मुख्य OS डिस्क EXT4 के साथ काफी तेज SSD ( OCZ Agility 60GB ) है। अगर मैं johnEXT4 के साथ एक यांत्रिक डिस्क पर आउटपुट लिखता हूं , तो मैं एक ही धीमे-धीमे अनुभव नहीं करता हूं, हालांकि यह दर बहुत धीमी है (SSD ~ 42,000 शब्द प्रति सेकंड, मैकेनिकल 8,000 w / s करता है)। थ्रूपुट प्रासंगिक हो सकता है। मैकेनिकल डिस्क का भी सिस्टम से कोई लेना-देना नहीं है। यह सिर्फ डेटा है।

और मैं कर्नेल 2.6.35-2 का उपयोग कर रहा हूं, लेकिन मैंने इस मुद्दे पर गौर किया है क्योंकि मुझे यह एसएसडी मिला है जब मैं शायद इस समय से .31 या कुछ का उपयोग कर रहा था।

तो क्या मंदी का कारण है? EXT4 मुद्दा? कर्नेल मुद्दा? SSD मुद्दा? ऊपर के सभी? कुछ और?

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


शायद आपको यह भी उल्लेख करना चाहिए कि आप एसएसडी का उपयोग क्या कर रहे हैं। सभी एसएसडी समान नहीं हैं।
क्रिस्टियन सियुपिटु

@ क्रिसियन: जोड़ा गया। यह एक OCZ चपलता है।
ओली

जवाबों:


12

यह थोड़ी देर के लिए एक ज्ञात मुद्दा रहा है। Btrfs की तरह SSD- ट्यून किए गए FS का उपयोग करने से मदद मिल सकती है, लेकिन ऐसा नहीं हो सकता।

अंततः, यह आईओ अनुसूचक / मेमोरी प्रबंधन प्रणालियों में एक बग है। हाल ही में, कुछ पैच हुए हैं जिनका उद्देश्य इस मुद्दे को संबोधित करना है। फिक्स्ड देखें : लिनक्स डेस्कटॉप जवाबदेही समस्या?

ये पैच अंततः मेनलाइन कर्नेल में अपना रास्ता बना सकते हैं, लेकिन अभी के लिए, आपको संभवतः अपना कर्नेल संकलित करना होगा यदि आप इस समस्या को ठीक करना चाहते हैं।


2
अगर मैं सही ढंग से समझूं , तो इसके लिए पैच लाइनक्स 2.6.37 में जाना चाहिए ।
JanC

1

लिनक्स के तहत SSD के प्रदर्शन को बेहतर बनाने के लिए कुछ चीजें आप देख सकते हैं।

  1. माउंट पॉइंट को 'noatime' पर सेट करें। एक्सेस टाइम को अपडेट करने वाली अतिरिक्त गतिविधि आमतौर पर अधिकांश उपयोग के मामलों में बर्बाद हो जाती है। विशेष रूप से एक फाइल में लगातार लाइनों को पंप करने के मामले में, आप हर एक्सेस के लिए फाइलसिस्टम में कई अपडेट के लिए मजबूर कर रहे हैं।

  2. लिफ्ट की जांच करें। अधिकांश डिस्ट्रोस के लिए डिफ़ॉल्ट एलेवेटर यादृच्छिक अभिगम कताई प्लाटर के लिए स्थापित किए जाते हैं। SSD को अतिरिक्त तर्क की आवश्यकता नहीं होती है, इसलिए एलीवेटर को नूप पर सेट करने से हार्डवेयर को राइट्स को प्रबंधित करने के द्वारा प्रदर्शन में सुधार हो सकता है।

  3. लिखने के माध्यम से v- वापस कैशिंग। यह थोड़ा अधिक गूढ़ है, लेकिन आप hdparmडिवाइस के लिए उपयोग की जाने वाली कैशिंग विधि की जांच कर सकते हैं । राइट-बैक कैशिंग एसएसडी प्रदर्शन पर राइट-थ्रू की तुलना में सकारात्मक प्रभाव डाल सकता है।


क्या आप @nzwulfin एलिवेटर की स्थापना के बारे में थोड़ा और लिख सकते हैं?
ग्रेज़गोरज़ वियरज़ोवेकी

ऐसा प्रतीत होता है कि एसएसडी-प्रदर्शन ठीक था। यह सब बाकी है जो ग्रस्त है।
थोरबजोरन रावन एंडरसन 14

0

आपकी फ़ाइल कैशिंग संभवतः आपके कार्यभार के लिए गलत तरीके से बनाई गई है। दुर्भाग्य से, लिनक्स कर्नेल अपने आप को संभालने के लिए पर्याप्त रूप से बेवकूफ नहीं है और यदि आपके पास बहुत सारे रैम और धीमे पर्याप्त ब्लॉक डिवाइस हैं तो डिफॉल्ट बहुत खराब हैं। देखें https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ जानकारी के लिए।

मेरा सुझाव है कि /etc/sysctl.confया तो संशोधित करने का प्रयास करें

vm.dirty_background_ratio = 3
vm.dirty_ratio = 6

कर्नेल को अन्य कार्यों को बेहतर तरीके से संभालने के लिए कैशिंग लिखने के कारण होने वाली रैम के दबाव को कम करने के लिए। यह निचले थ्रूपुट के लिए सुधरी हुई विलंबता का व्यापार करेगा।

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

vm.dirty_background_ratio = 5
vm.dirty_ratio = 80

ध्यान दें कि *_ratioसेटिंग्स उपलब्ध रैम के प्रतिशत को संदर्भित करती हैं। यदि आप बेहतर नियंत्रण चाहते हैं, तो *_bytesसेटिंग्स का उपयोग करें । मैं अपने कार्य केंद्र के लिए व्यक्तिगत रूप से निम्न विन्यास का उपयोग करता हूं:

vm.dirty_background_bytes = 50000000
vm.dirty_bytes = 200000000

यह पृष्ठभूमि लेखन कैश को 50 एमबी तक सीमित करता है और यदि 200 एमबी कैश में है तो सिंक्रोनस लेखन को बाध्य करता है।

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