मेरा सुझाव है कि आप SSD डिस्क के लिए पैरामीटर सेट करने के लिए udev का उपयोग करें। इस तरह से आप एक विशिष्ट कतार शेड्यूलर को कॉन्फ़िगर कर सकते हैं जो SSD, आदि के लिए अधिक उपयुक्त है। आप कुछ मापदंडों के आधार पर केवल कुछ उपकरणों के लिए भी पैरामीटर लागू कर सकते हैं।
आप अपने उपकरणों (जैसे डिस्क मॉडल और निर्माता) को निष्पादित करने के लिए आवश्यक विशिष्ट विशेषताओं को प्राप्त कर सकते हैं:
udevadm info -a -p /sys/block/sda
और अपने ब्लॉक डिवाइस के लिए सभी एटीआर जोड़े की जाँच करें।
एक अन्य लाभ यह है कि प्लग करने योग्य डिस्क के लिए पैरामीटर सेट करने की क्षमता है (जैसे बाड़ों या हॉटस्पैप बे में) और सेटिंग सभी नए उपकरणों पर लागू होगी, बशर्ते कि डिवाइस पैरामीटर मेल खाते हों।
इंटेल एसएसडी के लिए एक विशिष्ट अनुसूचक को लागू करने के लिए यहां एक उदाहरण है, आपका वांछित रीडहेड मूल्य (4096 ब्लॉक = 2048 केबी), और अन्य सभी एसएसडी के लिए एक अलग अनुसूचक भी लागू करें:
cat /etc/udev/rules.d/99-ssd.rules
# http://unix.stackexchange.com/a/71409/36574
# Setting specific kernel parameters for a subset of block devices (Intel SSDs)
SUBSYSTEM=="block", ATTRS{model}=="Intel SSDSC*", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="2048", ATTR{queue/scheduler}="deadline"
# for all other non-rotational block devices set a scheduler to 'noop' and readahead to 1024KB
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="1024", ATTR{queue/scheduler}="noop"
फ़ाइल को सहेजने के बाद आप परीक्षण कर सकते हैं कि क्या आपका नियम डिवाइस से मेल खाएगा और udvadm का उपयोग करके क्या करेगा:
udevadm test --action=add /sys/block/sda
यह उन सभी नियमों को प्रिंट करता है जो udev लोड करता है, क्या मेल खाता है, क्या नहीं करता है, और डिवाइस प्लग इन होने पर क्या निर्णय करेगा।
उम्मीद है की यह मदद करेगा।