उबंटू में ओडेमैंड और आयोवाइट प्रोसेसर फ्रीक्वेंसी कंट्रोल पॉलिसी

उबंटू के आधुनिक संस्करणों में, ऑनडेमांड प्रोसेसर आवृत्ति नियंत्रण नीति डिफ़ॉल्ट रूप से सक्षम है। ऊर्जा की बचत के संदर्भ में यह बात बहुत उपयोगी है, क्योंकि यह प्रोसेसर की आवृत्ति को सबसे कम संभव बनाता है जब प्रोसेसर पर लोड छोटा होता है।



हालाँकि, मैंने हाल ही में देखा कि इसकी एक खामी है: "ondemand" I / O ऑपरेशन के कारण CPU लोड को "निष्क्रिय" मानता है। इसका क्या मतलब है? इसका मतलब यह है कि जब प्रोसेसर को I / O संचालन के साथ लोड किया जाता है, तो प्रोसेसर की आवृत्ति अक्सर कम स्तर पर रहती है, जो समस्याओं को पैदा करता है यदि आपका सिस्टम iowait के साथ कुख्यात लिनक्स बग से ग्रस्त है।



इस अटपटे व्यवहार से निपटने के दो तरीके हैं।



पहला विकल्प प्रोसेसर के बिजली-बचत मोड को अक्षम करना है। उदाहरण के लिए, एक स्क्रिप्ट को ठीक करके जिसमें यह शामिल है। यह "ondemand" के बहुत तार्किक नाम के तहत छुपाता है और /etc/init.d



में स्थित है। यदि आप इस फ़ाइल में लाइन को ठीक करते हैं



 echo -n ondemand > $CPUFREQ
      
      







पर



 echo -n performance > $CPUFREQ
      
      







, तो प्रोसेसर लगातार अधिकतम आवृत्ति पर काम करेगा।



दूसरा विकल्प "ondemand" मोड को सक्षम करना है जिसमें यह iowait की अनदेखी नहीं करेगा। यह /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy



में विकल्प द्वारा नियंत्रित किया /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy



। ऐसा करने के लिए, मैंने एक छोटी सी init स्क्रिप्ट लिखी:



  #! /bin/sh ### BEGIN INIT INFO # Provides: io-is-busy # Required-Start: $ondemand # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: makes "ondemand" frequency governor to respect iowait load ### END INIT INFO case "$1" in start) start-stop-daemon --start --background --exec /etc/init.d/io-is-busy -- background ;; background) sleep 65 # waiting till ondemand finish its' work echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) echo 0 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac
      
      







उसके बाद, स्क्रिप्ट को /etc/init.d/io-is-busy



फ़ाइल में सहेजा जाता है, निष्पादन योग्य बनाया जाता है, और सिस्टम में कमांड sudo update-rc.d io-is-busy defaults 99 99



साथ पंजीकृत किया sudo update-rc.d io-is-busy defaults 99 99







वह सब है। अब बढ़ते प्रोसेसर लोड I / O संचालन के साथ, आवृत्ति स्वचालित रूप से अधिकतम हो जाती है, जैसा कि मैं चाहता था।



All Articles