/usr/src/linux/Documentation/block/switching-sched.txt
में प्रलेखित के रूप में, किसी भी विशेष ब्लॉक डिवाइस पर I/O शेड्यूलर रनटाइम पर बदला जा सकता है। कुछ विलंबता हो सकती है क्योंकि पिछले शेड्यूलर के अनुरोधों को नए शेड्यूलर को उपयोग में लाने से पहले सभी फ्लश किए गए हैं, लेकिन डिवाइस को भारी उपयोग के दौरान भी समस्याओं के बिना बदला जा सकता है।
# cat /sys/block/hda/queue/scheduler
noop deadline [cfq]
# echo anticipatory > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop [deadline] cfq
आदर्श रूप से, सभी आवश्यकताओं को पूरा करने के लिए एक शेड्यूलर होगा। यह अभी तक अस्तित्व में प्रतीत नहीं होता है। गिरी अक्सर अपने काम का बोझ के लिए सबसे अच्छा अनुसूचक चयन करने के लिए पर्याप्त ज्ञान नहीं है:
noop
अक्सर स्मृति समर्थित ब्लॉक उपकरणों के लिए सबसे अच्छा विकल्प है (उदाहरण के लिए ramdisks) और अन्य गैर आवर्ती मीडिया (फ्लैश) जहां मैं पुनर्निर्धारित करने की कोशिश कर/ओ संसाधनों की बर्बादी है
deadline
एक हल्के अनुसूचक जो विलंबता
cfq
प्रयासों में वे एक हार्ड सीमा डाल करने के लिए मैं/हे बैंडविड्थ की पूरे सिस्टम में निष्पक्षता बनाए रखने की कोशिश करता है
डिफ़ॉल्ट रूप से anticipatory
था, और इसे बहुत ट्यूनिंग मिली, लेकिन 2.6.33 (2010 की शुरुआत में) में हटा दिया गया था। cfq
कुछ समय पहले डिफ़ॉल्ट बन गया, क्योंकि इसका प्रदर्शन उचित है और निष्पक्षता बहु-उपयोगकर्ता प्रणालियों (और यहां तक कि एकल-उपयोगकर्ता डेस्कटॉप) के लिए एक अच्छा लक्ष्य है। कुछ परिदृश्यों के लिए - डेटाबेस अक्सर उदाहरण के रूप में उपयोग किए जाते हैं, क्योंकि उनके पास पहले से ही अपने अनोखे शेड्यूलिंग और एक्सेस पैटर्न होते हैं, और अक्सर अधिकतर महत्वपूर्ण सेवा (इसलिए निष्पक्षता की परवाह कौन करता है?) - anticipatory
का एक लंबा इतिहास है इन वर्कलोड पर सर्वोत्तम प्रदर्शन के लिए ट्यून करने योग्य होने के कारण, और deadline
बहुत ही जल्दी अंतर्निहित डिवाइस के माध्यम से सभी अनुरोधों को पास करता है।
बढ़िया जानकारी, धन्यवाद! लेकिन मेरा मूल प्रश्न अभी भी अनुत्तरित नहीं है, अगर मैं फ्लैश ड्राइव प्लग करता हूं या मेरी नेटबुक फ्लैश डिस्क से बाहर निकलती है क्योंकि यह मुख्य ड्राइव है तो कर्नेल स्मार्ट सीएफक्यू के बजाए नोप लेने के लिए पर्याप्त स्मार्ट है? या यह मैन्युअल रूप से करने के लिए पूरी तरह से मेरे ऊपर है? –
आप डिफ़ॉल्ट रूप से एक अलग शेड्यूलर का उपयोग करने के लिए कर्नेल को कॉन्फ़िगर कर सकते हैं। गैर-घूर्णन मीडिया पर स्वचालित रूप से 'नोओप' का उपयोग करने के लिए चालाक होगा, लेकिन कर्नेल में उस कार्यक्षमता नहीं है। इस तरह के गैर घूर्णनशील मीडिया का पता लगाना है, लेकिन यह विश्वसनीय नहीं है क्योंकि कुछ डिस्क स्वयं को गलत तरीके से रिपोर्ट करते हैं, और यह अभी तक I/O शेड्यूलर कोड तक किसी भी तरह से वायर्ड नहीं है। – ephemient
आप डिवाइस विशेषताओं के आधार पर शेड्यूलर को परिभाषित करने के लिए udev नियम जोड़ सकते हैं, जैसे डेबियन विकी (https://wiki.debian.org/SSDOptimization#Low-Latency_IO-Scheduler) # गैर-घूर्णन डिस्क के लिए समय सीमा शेड्यूलर सेट करें कार्रवाई == "जोड़ने | परिवर्तन", कर्नेल == "एसडी [az]", ATTR {कतार/घूर्णी} == "0", ATTR {कतार/अनुसूचक} = "समय सीमा" –