আমি কীভাবে একবারে সমস্ত কোরের সিপিইউ ফ্রিকোয়েন্সি স্কেলিং গভর্নরকে সেট করব?


37

আমি প্রতিটি কোরের জন্য স্বতন্ত্রভাবে না করে একবারে সমস্ত কোরের সিপিইউ ফ্রিকোয়েন্সি স্কেলিং গভর্নর সেট করতে চাই। এই কাজ করতে একটি উপায় আছে কি?

(আমি জানি গভর্নরের প্রতিধ্বনি করা সহজ হবে /sys/devices/system/cpu/cpu*/cpufreq/scaling_governorতবে আমি কাস্টম সমাধান খুঁজছি না))


2
"কাস্টম সমাধান" দিয়ে আপনি বোঝাচ্ছেন যে শেল স্ক্রিপ্টটি গ্রহণযোগ্য নয়, এটি একটি বিল্ট-ইন জিইউআই বোতাম হওয়া দরকার?
jg-faustus

আমি কেবল ভাবছি যে কোনও স্ট্যান্ডার্ড ইনস্টলেশনতে ইতিমধ্যে কোনও সমাধান রয়েছে কিনা (জিইউআই লাগবে না)।
htorque

এই পৃষ্ঠাটি দেখুন: " ডিবিয়ান বাস্তবায়ন" এর অধীনে আদর্শ লেবেল.ওয়ার্ডপ্রেস.com / 2008 / 06 / 22 / cpu-fre वारंवार-scaling-in-linux : বুট ডিফল্ট পরিবর্তন করা সম্ভবত দৃশ্যমান এবং এখানে পাওয়ারনগ নামে একটি ব্যবহারকারী স্থান রয়েছে। (এটি উত্তর দেওয়ার পরিবর্তে একটি মন্তব্য কারণ পোস্টটি ২০০৮ সালের, এবং আমি এখনও পরীক্ষা করে দেখিনি যে এটি এখনও কাজ করে ...)
jg-faustus

উত্তর:


25

আমি এখনও একটি লিনাক্স নুব আছি তবে আপনি কি মনে করেন না যে সিফুফেরিকিলস আপনাকে এটি ব্যবহার করে করতে দেয় (এটি উবুন্টু ওএসে বান্ডিল হয় না তবে সঞ্চিত্রে রয়েছে)

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
  • -rপতাকা সবার জন্য পরিবর্তন ( "সব হার্ডওয়্যার সম্পর্কিত") কোর সেট করতে ব্যবহৃত হয়

6
-R সম্পর্কিত বিকল্পটি সমস্ত কোরের জন্য এটি করে না। অপশন-সি <নাম্বার> সহ সিপিইউ নম্বরটি নির্দিষ্ট করতে হবে তবে এই স্ক্রিপ্টটি একযোগে সমস্ত সিপাসের জন্য এটি করবে: ((i = 0; i <$ (nproc); i++)) জন্য; cpufreq-set -c $ i -r -g সম্পাদনা করুন; সম্পন্ন
শ্রী

6
ঠিক, @ শ্রী ঠিক আছে। cpufreq-setআসলে চূড়ান্তভাবে সহজ তবে প্রয়োজনীয় কার্যকারিতার অভাব রয়েছে। এই ভোট কাউন্টার হিসাবে সুস্পষ্টভাবে দেখায় প্রচুর লোক এ সম্পর্কে সচেতন নয় কারণ এর বিবরণটি এটিকে শীর্ষে রাখার জন্য কেবল বিভ্রান্তিকর।
পোজ

2
পরীক্ষা না করে কে এই +1 দেয় ???? এটি মোটেই কাজ করে না। আমি খুঁজে পেতে পারে সহজ কাজ সমাধান পোস্ট।
সুইচ 87

20

আমি অনেকগুলি গুগল করেছি এবং আমি মনে করি এটি কেবল সম্ভব নয়, তাই আমি নিম্নলিখিত ওয়ান-লাইনারটিকে আমার সাথে যুক্ত করেছি .bashrc:

function setgov ()
{
    echo "$1" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}

এখন আমি এর মতো কিছু চালাতে পারি setgov ondemandএবং সমস্ত কোর অনডেম্যান্ড গভর্নরের কাছে চলে যাবে।


2
স্কেলিং_গোভারার ফাইলটি মূলের মালিকানাধীন এবং অনুমতিগুলি সীমাবদ্ধ করার কারণে এটি কাজ করে না। অনুমতিগুলি পরিবর্তন করা সর্বদা বাঞ্ছনীয় নয়।
শ্রী

ব্যবহারকারী 49449 এর উত্তরে আমার মন্তব্যে বিকল্প স্ক্রিপ্ট দেখুন।
শ্রী

6

সমস্ত কোরের গভর্নর পরিবর্তন করার জন্য সংক্ষিপ্ততম আদেশটি নিম্নলিখিত:

sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'

আপনি এটি বাশার্কে হর্টকের মতো উল্লেখ করে যোগ করতে পারেন, আপনাকে এটি রুট হিসাবে চালাতে হবে sudo setgov performance:

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g $1; 
     done
}

2

পাশাপাশি এটিতে ব্যাশ কোডের সমাপ্তি যুক্ত করতে পারে:

function setgovernor () {
    echo "$1" | sudo tee 
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor

2

গভর্নর প্রায় 30 সেকেন্ড পরে উবুন্টু 16.04 বা আরও সাম্প্রতিক হিসাবে (আমি উবুন্টু মেটে আছি) হিসাবে পাওয়ারসভে ফিরে আসার পর থেকে আমি যেভাবে এটি আটকে রেখেছি;

  1. এই (এক লাইনের) কোডটি রাখুন (আপনাকে ধন্যবাদ, পূর্বের উত্তরে সুইচ 87 এর সৌজন্যে)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. ডিরেক্টরিতে ফাইলের মধ্যে

    /etc/rc.local
    

খনিটি "প্রস্থান 0" এর উপরে একটি লাইন এবং মন্তব্যযুক্তগুলির অধীনে নিরঙ্কিত।

"আরসি.লোকাল" যারা জানেন না তাদের জন্য এটি কমান্ডটি সুডো হিসাবে চালায়। গভর্নরকে পরিবর্তন করতে কোনও কমান্ডকে সুডো হিসাবে চালানো দরকার।

এটি গভর্নরটিকে পাওয়ার সাভেতে পুনরায় সেট করতে দেয় এবং 60 সেকেন্ডের পরে কোডটি সুদো হিসাবে চালায় যাতে এটিকে সম্পাদন করে ফিরিয়ে দেওয়া যায়।

"60" (আপনি কোডটি অনুলিপি করেছেন) যেকোন সময় পরিবর্তন করুন (সেকেন্ডের মধ্যে। পরিবর্তন.

আমার ঘন্টা এবং অনুসন্ধানের সময়গুলির বাইরে আমি এর চেয়ে বেশি স্থায়ী স্থিরতা পাই না। আমি বুঝতে পারি যে এটি কয়েক মিনিটের মধ্যে কি পাওয়ারসভেতে আছে যদি আমি খুঁজে পাওয়া সেরা সমাধানটি ঠিক আছে, তাই না? ঠিক।

সেরা ফিক্স নয়, তবে পাওয়ারস্যাভ জিনিসে সামান্য স্যুইচ করার পরে এটি কিছুটা স্থায়ী করে তোলে। আপনি যদি এখনই বুট করতে চান এবং কোনও গেম বা কোনও কিছুতে ঝাঁপিয়ে পড়তে চান তবে আপনি যে কোডটি সরিয়ে রেখেছিলেন সেটির জন্য একটি মিনিট অপেক্ষা করতে হবে যা আপনি পাওয়ার সেভ থেকে ফিরে স্যুইচ করতে বা তার সময় নির্ধারণ করতে (এটি কতক্ষণ সময় নেয় তার উপর নির্ভর করে) শুরু করার জন্য সমস্ত কিছু যাতে এটি সঠিকভাবে পারফরম্যান্সে ফিরে যেতে পারে)।

এবং, সর্বদা হিসাবে, ডিফল্টে ফিরে যেতে (আমি জনগণের পিসিগুলিকে অতিরিক্ত উত্তাপের সাথে কিছু সমস্যা দেখেছি যার কারণেই তারা এটিকে প্রথম স্থানে পাওয়ারসেভের তুলনায় ডিফল্ট করেছে) কেবলমাত্র আরসি.লোকাল থেকে কোডটি সরিয়ে পুনরায় বুট করুন বা এটিকে আবার স্যুইচ করুন আপনার সিপিইউ আইকন সূচক সুইচার বা রান দিয়ে ম্যানুয়ালি;

 sudo /etc/init.d/cpufrequtils restart

টার্মিনাল এবং বা রিবুট।



0

স্যুইচ's87 এর উত্তরের উপর ভিত্তি করে আমি একটি সাধারণ স্ক্রিপ্ট তৈরি করেছি cpufreq-set-all, যা cpufreq-setসমস্ত সিপিইউ দিয়ে অন্যান্য জিনিস করার অনুমতি দেবে :

   #!/bin/bash
   MAX_CPU=$((`nproc --all` - 1))
   for i in $(seq 0 $MAX_CPU); do
       echo "Changing CPU " $i " with parameter "$@;
       cpufreq-set -c $i $@ ;
   done

এখন এটি এর chmod +xমতো ( অবশ্যই, পরে ) আহ্বান করা যেতে পারে :

cpufreq-set-all -g powersave

অথবা

cpufreq-set-all -f 800Mhz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.