क्यों Ubuntu 16.04 सभी ड्राइव IO अनुसूचियों को "समय सीमा" पर सेट करता है?


17

मैंने अभी-अभी अपने लैपटॉप पर दूसरे विभाजन में Xubuntu 16.04-64bit स्थापित किया है। मैंने देखा कि यह कई बार थोड़ा धीमा लग रहा था, इसलिए मैंने जाँच की कि उस ड्राइव के लिए कौन से IO अनुसूचक का उपयोग किया गया था, जो deadlineसभी ड्राइव के लिए निकला । मेरे पास SSDs और हार्ड ड्राइव की एक जोड़ी है, इसलिए मुझे पता है कि SSDs और हार्ड ड्राइव के लिए "समय सीमा" सर्वोत्तम है cfq

मैं एक और विभाजन पर 14.04 में बूट हुआ और यह cfqघूर्णन ड्राइव और deadlineSSD के लिए उपयोग कर रहा है , जैसा कि यह होना चाहिए। मैं, यह भी /etc/udev/rules.dदेखने के लिए देखा कि क्या 14.04 ड्राइव के प्रकार के लिए कॉन्फ़िगर करने के लिए एक नियम का उपयोग कर रहा था, लेकिन यह वहां नहीं था, इसलिए मुझे लगता है कि कर्नेल यह कर रहा है।

तो मैं सोच रहा था कि क्या यह एक बग है या वे अब सब कुछ के लिए "समय सीमा" का उपयोग कर रहे हैं?

अपडेट: मैंने /etc/udev/rules.d के बारे में जो टिप्पणी लिखी थी, वह एक गलती थी। वास्तव में मैं एक udv नियम का उपयोग कर रहा हूं ताकि कुछ साल पहले मैंने SSD का उपयोग करना शुरू कर दिया था, इसलिए रोटेशन प्रकार के अनुसार शेड्यूलर (जैसा कि नीचे जवाब है) को बदलने के लिए। मुझे लगता है कि मैं भूल गया ... बूढ़ा हो रहा हूं। वैसे भी, मेरे द्वारा उपयोग किए गए संदर्भों में से एक डेबियन एसएसडी अनुकूलन विकी था

यदि इसे शामिल किया जाता तो क्या यह एक अच्छा विचार नहीं होता? केवल एक सलाह!

जवाबों:


6

14.04 की रिलीज़ के साथ 3.13 कर्नेल के लिए डिफ़ॉल्ट अनुसूचक को CFQ से समय सीमा में बदल दिया गया था ।

अब एक अलग सर्वर कर्नेल नहीं है और CFQ शेड्यूलर कई सर्वर उपयोग परिदृश्यों के अनुकूल नहीं है, जैसे KVM टाइमआउट लिखते हैंUSB उपकरणों के साथ डेस्कटॉप पर भी प्रदर्शन प्रतिगमन हैं ।


1
पढ़ने के लिए धन्यवाद, बहुत ज्ञानवर्धक! USB समस्या मैंने अक्सर SD कार्ड और TWRP में एंड्रॉइड टैबलेट के साथ ली है। उत्तरार्द्ध में, यह कई मिनटों के लिए अंत में लटका होगा। KVM समस्या मेरे VB मेहमानों पर कभी नहीं दिखाई देती है क्योंकि वे मेरे SSD w / डेडलाइन पर हैं।
curt54

32

उबंटू कर्नेल टीम नियमित रूप से अलग-अलग फ़ाइल सिस्टम पर विभिन्न सिम्युलेटेड वर्कलोड का बहुत विश्लेषण करती है और I / O अनुसूचकियों को सर्वश्रेष्ठ जेनेरिक I / O शेड्यूलर पसंद का एक विचार प्राप्त करने के लिए। सामान्य उत्तर यह है कि सभी विभिन्न प्रकार के मीडिया के लिए सभी विभिन्न प्रकारों में एक सामान्य विन्यास के लिए कोई सही I / O शेड्यूलर विकल्प नहीं है। याद रखने वाले मुख्य बिंदु हैं:

  1. सिस्टम SSD की ओर बढ़ रहे हैं, इसलिए नोप या समय सीमा इन के लिए सर्वोत्तम है; noop में समय सीमा से कम CPU ओवरहेड है।

  2. सीएफक्यू बनाम डेडलाइन एक कठिन कॉल है। CFQ अधिक लचीलापन देता है। हालांकि, हमने पाया कि सिम्युलेटेड I / O ऑपरेशंस की एक विस्तृत श्रृंखला के लिए, समय सीमा ने कम विलंबता और CFQ की तुलना में थोड़ा अधिक उच्चतर थ्रूपुट प्रदान किया।

  3. मैं नियमित रूप से बेंचमार्क कर्नेल (प्रत्येक कर्नेल परीक्षण को फ़ाइल सिस्टम और I / O अनुसूचियों की एक श्रृंखला के लिए 3+ दिन पूर्ण होने में लेता है)। इससे, और अन्य मिश्रित डेटा से हम सर्वोत्तम विकल्प पर एक सूचित निर्णय लेने की कोशिश करते हैं, देखें:

http://kernel.ubuntu.com/~cking/fs-tests/

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


5
हमने Ubuntu Zesty 4.10 कर्नेल के लिए CFQ को डिफ़ॉल्ट के रूप में उपयोग करने के लिए स्थानांतरित किया है और नए CONFIG_BLK_WBT_MQ (मल्टीक्यू राइटबैक थ्रॉटलिंग) को भी सक्षम किया है क्योंकि यह फ्लैश डिवाइस जैसे धीमे उपकरणों के लिए गंदे कैश राइटबैक मुद्दों को हल करता है।
कॉलिन इयान किंग

1
क्या हम शायद BFQ को अब डिफ़ॉल्ट रूप से देखने जा रहे हैं कि यह कर्नेल 4.12 में है?
जयंतीदो

हम इसका मूल्यांकन 4.12 / 4.13 के लिए करेंगे, मैंने किबर के साथ कुछ शुरुआती परीक्षण भी किया था, लेकिन इस सप्ताह 4.12 से बाहर होने के बाद मैं इन पर फिर से विचार करूंगा।
कॉलिन इयान किंग

सिद्धांत रूप में यह प्रश्न केवल 16.04 कर्नेल के बारे में है, लेकिन यह अभी भी खोज में आता है :-)। तो यहाँ एक और हालिया अपडेट है: उबंटू ने CFQ पर वापस स्विच किया, उबंटू डिफ़ॉल्ट में मेल खाता है, उबंटू 17.04 (zesty) में 18.10 (ब्रह्मांडीय) के माध्यम से ।
sourcejedi

1
आगे का अद्यतन: सीएफक्यू या बीएफक्यू (कम से कम डिफ़ॉल्ट रूप से) का उपयोग करते समय लिनक्स ने डब्ल्यूबीटी को निष्क्रिय कर दिया है, क्योंकि यह एक साथ अच्छी तरह से काम नहीं करता है। 2) यदि आप WBT द्वारा हल की गई समस्या का मूल्यांकन करना चाहते हैं, तो मुझे लगता है कि आपको इस समस्या से अवगत होने की आवश्यकता है कि डिवाइस (अलग-अलग फ़र्मवार) के बीच समस्या अलग-अलग हो। आपके बेंचमार्क परिणामों में, मैं यह भी नहीं जान सकता कि किस प्रकार के उपकरण का उपयोग किया गया था। 3) मैं आपके विवरण के बारे में उत्सुक हूं कि डब्ल्यूबीटी क्या हल करता है। यदि आप WBT पैच सेट के v2 पर कवर पत्र को देखते हैं, तो WBT को तेज फ्लैश पर बफ़र किए गए लेखन को संभालने के लिए डिज़ाइन किया गया है , जिसमें बहुत गहरी कतारें हो सकती हैं, और एक ही डिवाइस पर पाठकों को भूखे रहने से बचा सकती हैं।
sourcejedi

9

मुझे नहीं पता कि डेवलपर्स ने deadlineडिफ़ॉल्ट शेड्यूलर के रूप में चुनने का फैसला क्यों किया , शायद यह इसलिए है क्योंकि अधिकांश नए कंप्यूटर एक एसएसडी के साथ जहाज करते हैं, जिस पर आमतौर पर सिस्टम स्थापित होते हैं। आप शेड्यूलर को मैन्युअल रूप से इस तरह सेट कर सकते हैं, यदि आपने पहले ही इसे स्थापित नहीं किया है ... स्थापित करें gksu:

एक टर्मिनल खोलें और निष्पादित करें:

sudo apt install gksu  

फिर इस कमांड को निष्पादित करें:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

निम्न पाठ को खाली फ़ाइल में पेस्ट करें और परिवर्तित फ़ाइल को सहेजें।

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

ऑपरेटिंग सिस्टम को रिबूट करें और अब आप एचडीडी और एसएसडी के लिए इष्टतम शेड्यूलर्स का उपयोग कर रहे हैं।


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