लिनक्स समवर्ती डिस्क IO को कैसे संभालता है?


12

जब एक लिनक्स सर्वर कई अलग-अलग फ़ाइलों को पढ़ने के लिए कई समवर्ती अनुरोधों की सेवा दे रहा है, तो यह करता है:

  1. File_1 की तलाश करें, पूरी फ़ाइल पढ़ें, फिर File_2 की तलाश करें, पूरी फ़ाइल पढ़ें, फिर File_3 की तलाश करें, आदि।

  2. File_1 की तलाश करें, इसका हिस्सा पढ़ें (रीडहेड मान तक?), फिर File_2 की तलाश करें, इसका भाग पढ़ें, फिर File_1 पर वापस जाएं, जहां इसे छोड़ दिया गया है, इसके बारे में अधिक पढ़ें, फिर File_3, आदि की तलाश करें। आदि

यदि यह दूसरा मामला है, तो सर्वर आवश्यकता से बहुत अधिक खोज कर रहा है, जो चीजों को काफी धीमा कर देगा। उस मामले में क्या कोई ट्यूनिंग है जो मैं कर सकता था?

जवाबों:


14

डिस्क I / O में एलीवेटर नामक एक चीज होती है। डिस्क उपसमूह डिस्क के सिर को पलस्तर पर फेंकने से बचने की कोशिश करता है। यह I / O अनुरोधों को फिर से आदेश देगा (जब एक बाधा द्वारा उदाहरण के लिए निषिद्ध नहीं) ताकि सिर डिस्क के अंदर से बाहर की ओर बढ़ रहा होगा, और वापस, रास्ते में अनुरोध किए गए I / Os का प्रदर्शन करेगा।

दूसरी बात आई / ओ अनुरोध विलय है। यदि थोड़े समय के विंडो के भीतर कई अनुरोध हैं, जो फ़ाइल के विभिन्न भागों तक पहुंचते हैं, तो I / O सबसिस्टम कई असंतुष्ट अनुरोध जारी करने के बजाय सभी डेटा को एक बार में प्राप्त करने का प्रयास करेगा।

जहां तक ​​ट्यूनिंग जाती है। यदि आप एप्लिकेशन लेखक हैं, तो बहुत कुछ है जो आप कर सकते हैं। आप बड़े, अनुक्रमिक I / Os जारी कर सकते हैं, जब भी आप कर सकते हैं और fsync () et.al का उपयोग कर सकते हैं। जब आपको यह सुनिश्चित करने की आवश्यकता होती है कि डेटा प्लेटर्स पर है।

यदि आप एक sysadmin हैं, और आप पूरी तरह से जानते हैं, कि 2 एप्लिकेशन लीपफ्रॉग के डेटा अनुरोध, और वे क्रमिक रूप से फ़ाइलों को पढ़ने की कोशिश करते हैं (जैसे आपके पास 2 डीवीडी समानांतर में ट्रांसकोड हो रही हैं), तो हाँ, रीडहेड को बढ़ाने में मदद मिलेगी। अन्यथा आपको अपनी ट्यूनिंग करने से पहले अपने I / O पैटर्न और आकारों पर एक नज़र डालने की ज़रूरत है, अपने RAID स्तर (यदि कोई हो) और अन्य कारकों पर विचार करें। देखते हैं कि आपकी वास्तविक अड़चन क्या है, इससे पहले कि आप ट्यूनिंग शुरू करें, यह अनुमान लगाना मुश्किल हो सकता है कि वास्तव में आपके सिस्टम को क्या सीमित कर रहा है।


5

लिनक्स में आप अपने स्वयं के शेड्यूलिंग एल्गोरिथ्म को परिभाषित कर सकते हैं, आपके पास अलग-अलग संभावनाएं हैं, मुझे स्कूल में इस पर एक टुकड़ा करना था और रेड हैट के इस लेख से मुझे बहुत मदद मिली। हालाँकि यह विशेष रूप से Red Hat के लिए है, लेकिन आप इन शेड्यूलर्स को लगभग किसी भी linux distro में पा सकते हैं।

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