# CPU frequency scaling (العربية)

Related articles

- Laptop Mode Tools
- pm-utils
- PHC

cpufreq تعني بنية النواة التحتية التي تقوم بتغيير تردد وحدة المعالجة المركزية، تسمح هذه التقنية لنظام التشغيل من أن يقوم بتغيير تردد المعالج زيادةً أو نقصاناً من أجل توفير استهلاك الطاقة، من الممكن أن يتم تغيير التردد تلقائياً automatically بحسب احتياجات النظام واستجابةً لأحداث ACPI (واجهة التهيئة المتقدمة للطاقة Advanced Configuration Power Interface) أو يدوياً عن طريق البرامج.

منذ إصدار النواة رقم 3.4 فإن الوحدات modules الضرورية يتم تحميلها تلقائياً بالإضافة إلى تفعيل مخطط الطاقة ondemand governor (العمل عند الطلب) الذي ينصح بالعمل عليه بشكل افتراضي. غير أن برامج مثل cpupower[broken link: invalid section], acpid, laptop-mode-tools أو بعض الأدوات ذات الواجهة الرسومية GUI ما زالت تُستخدم للتهيئة المتقدمة.

## أدوات(cpupower)

حزمة cpupower هي عبارة عن أدوات صممت لتساعد في تغيير تردد المعالج، مع العلم أنك تستطيع تغيير التردد من دون وجود هذه الحزمة ولكن من المستحسن وجودها لأنها تحتوي على أدوات مفيدة تعمل في سطر الأوامر وخدمة لتغيير مخطط الطاقة governor عند الإقلاع، يتواجد ملف تهيئة الحزمة cpupower في المسار `/etc/default/cpupower`، يتم قراءة هذا الملف من قبل سكربت bash في `/usr/lib/systemd/scripts/cpupower` والذي يتم تفعيله من قبل مدير النظام `systemd` مع `cpupower.service`، لتفعيل cpupower عند الإقلاع باستعمال systemd قم بتنفيذ:

    # systemctl enable cpupower.service

تستطيع الحصول على واجهة لـ gnome-shell من CPU Freq.

### تعاريف المعالج الخاصة بالتردد

ملاحظة: اعتباراً من النواة 3.4 فإن وحدة المعالج المحلية يتم تحميلها تلقائياً
ملاحظة: بدءاً من النواة 3.9 سيتم وبشكل تلقائي استخدام تعريف `pstate` الخاص بإدارة الطاقة في معالجات إنتل الحديثة والاستغناء عن التعاريف الظاهرة في الأسفل، هذا التعريف له الأفضلية على التعاريف الأخرى كما أنه بُني بحيث لا يكون كوحدة module، يتم استخدام هذا التعريف حالياً بشكل تلقائي في المعالجات من النوع Sandy Bridge و Ivy Bridge، إذا كنت تواجه مشكلة أثناء استخدام هذا التعريف قم بإضافة `intel_pstate=disable` إلى سطر النواة، يمكنك استعمال نفس أدوات المُستخدِم مع هذا التعريف لكن لا تستطيع أن تتحكم فيه.

أداة cpupower تحتاج إلى وحدات لمعرفة حدود المعالج المحلي (انظر إلى الجدول في الأسفل)، للاطلاع على قائمة بكل الوحدات المتوفرة قم بتنفيذ:

    $ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/

Tip: لتحميل الوحدة أثناء إقلاع النظام نفذ التالي:

    # echo <module> >/etc/modules-load.d/<module>.conf

ملاحظة: تحميل وحدة خاطئة سينتج عنه الخطأ "No such device"

قم بتحميل الوحدة المناسبة عن طريق:

    # modprobe <module>

الوحدة | الوصف
--- | ---
acpi-cpufreq | تعريف CPUFreq الذي يستخدم ACPI Processor Performance States، هذا التعريف يدعم تقنية Intel Enhanced SpeedStep (سابقاً كانت هذه التقنية مدعومة من وحدة speedstep-centrino التي تم إهمالها)
speedstep-lib | تعريف CPUFreq لمعالجات Intel speedstep enabled (خاصة المعالجات من فئة atoms و معالجات pentium القديمة (أقدم من 3))
powernow-k8 | تعريف CPUFreq لمعالجات K8/K10 Athlon64/Opteron/Phenom. تم إهمال هذا التعريف منذ إصدار النواة رقم 3.7، استعمل acpi_cpufreq
pcc-cpufreq | هذا التعريف يدعم واجهة Processor Clocking Control المصممة من قبل شركتا Hewlett-Packard و Microsoft التي تفيد في بعض مُخدمات Proliant
p4_clockmod | تعريف CPUFreq لمعالجات Intel Pentium 4 / Xeon / Celeron ، عند تفعيل التعريف سيقوم بتخفيض حرارة المعالج عن طريق تخطي دورات الساعة skipping clocks، من الأرجح أنك ستقوم باستخدام تعريف Speedstep بدلاً من هذا

عند تحميل التعريف المناسب فإنك تستطيع عرض معلومات مفصلة عن المعالج (أو المعالجات) بتنفيذ:

    $ cpupower frequency-info

### Scaling governors

الـ governors هي مخططات الطاقة للمعالج (انظر إلى الجدول في الأسفل)، ولا يمكن تفعيل أكثر من مخطط واحد في نفس اللحظة، لتفاصيل أكثر قم بالاطلاع على الوثائق الرسمية official documentation في مصادر النواة.

ملاحظة: النواة تقوم بتحميل المخطط `on_demand` بشكل افتراضي

الوحدة | الوصف
--- | ---
cpufreq_ondemand | تقوم بالتبديل بين الترددات ديناميكياً عند وصول نسبة الحِمل على المعالج إلى 95%
cpufreq_performance | تجعل المعالج يعمل بأعلى تردد
cpufreq_conservative | تقوم بالتبديل بين الترددات ديناميكياً عند وصول نسبة الحِمل على المعالج إلى 75%
cpufreq_powersave | تجعل المعالج يعمل بأدنى تردد
cpufreq_userspace | تجعل المعالج يعمل بالترددات التي يحددها المستخدم

Tip: لمراقبة سرعة المعالج لحظياً قم بتنفيذ:

    $ watch grep \"cpu MHz\" /proc/cpuinfo

#### عند استخدام cpupower

لتحميل وتفعيل مخطط معين يجب عليك تنفيذ:

    # cpupower frequency-set -g <governor_without cpufreq_>

#### عند عدم استخدام cpupower

Tip: لتحميل مخطط أثناء إقلاع النظام نفذ التالي:

    # echo <module> > /etc/modules-load.d/<module>

لتحميل مخطط معين نفذ:

    # modprobe <governor>

### ضبط مخططات الطاقة (باستخدام cpupower)

Tip: قم بإضافة الأوامر التالية إلى `/etc/default/cpupower`، <percent> هي النسبة المئوية للحِمل على المعالج cpu load، <governor> هي مخطط cpupower.

لوضع عتبة (نقطة بداية) للصعود إلى تردد آخر:

    # echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/up_threshold

لوضع عتبة (نقطة بداية) للنزول إلى تردد آخر:

    # echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/down_threshold

#### معدل أخد العينات

يقوم مخطط الطاقة بتفحص إعدادات المعالج لضبطها من فترة لأخرى، والذي يقوم بتحديد تكرار هذه العملية هو معدل أخد العينات sampling rate، عامل `sampling_down_factor` الأكبر من 1 يحسن من الأداء وذلك بتخفيض السقف الأعلى للحِمل على المعالج وتركه يعمل بأعلى تردد ساعة نظراً للحِمل الكبير عليه، هذه العملية ليس لها تأثير على الأداء في حالة الترددات المنخفضة أو الحمولة المنخفضة. لقراءة قيمة معدل أخذ العينات (افتراضياً =1) قم بتنفيذ:

    $ cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor

لتغيير القيمة نفذ:

    # echo -n <value> > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor

### تعيين الحد الأعلى والحد الأدنى للتردد

ملاحظة: يمكن تعيين مخطط الطاقة والحد الأعلى والأدنى للتردد من `/etc/default/cpupower`، للتعيين لنواة معالج واحدة فقط: `-c <core #>` حيث <clock_freq> هو تردد ساعة المعالج بالواحدات GHz أو MHz.

لضبط الحد الأعلى لتردد المعالج:

    # cpupower frequency-set -u <clock_freq>

لضبط الحد الأدنى:

    # cpupower frequency-set -d <clock_freq>

لتحديد تردد معين للمعالج:

    # cpupower frequency-set -f <clock_freq>

## التفاعل مع حالات ACPI

قد يُعِد بعض المستخدمين مخططات تتبدل تلقائياً بحسب حالات ACPI المختلفة مثل توصيل شاحن الكهرباء أو غلق شاشة الحاسب المحمول laptop lid، سنعطي مثالاً سريعاً في الأسفل لكن من الجيد قراءة مقال كامل عن acpid.

إذا كانت حزمة acpid مثبتة لديك فإنك ستجد قائمة بالحالات أو الوضعيات مسجلة في الملف `/etc/acpi/handler.sh`، على سبيل المثال لتبديل مخطط أداء المعالج من `performance` إلى `conservative` عند فصل شاحن الكهرباء وإعادة تبديل المخطط عند إعادة وصل الشاحن:

    /etc/acpi/handler.sh

    [...]

     ac_adapter)
         case "$2" in
             AC*)
                 case "$4" in
                     00000000)
                         echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                         echo -n $minspeed >$setspeed
                         #/etc/laptop-mode/laptop-mode start
                     ;;
                     00000001)
                         echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                         echo -n $maxspeed >$setspeed
                         #/etc/laptop-mode/laptop-mode stop
                     ;;
                 esac
             ;;
             *) logger "ACPI action undefined: $2" ;;
         esac
     ;;

    [...]

## Privilege Granting Under GNOME

ملاحظة: قام مدير النظام systemd بتقديم الأداة logind التي تتعامل مع إجرائيات consolekit و policykit، الكود التالي في الأسفل لا يعمل، قم بتعديل العنصر <defaults> باستخدام logind في الملف /usr/share/polkit-1/actions/org.gnome.cpufreqselector.policy بما يتناسب مع احتياجاتك ومع كتيب polkit الإرشادي [1]

واجهة GNOME لديها أداة جميلة لتبديل مخطط الطاقة governor بشكل سريع، لاستخدامها دون الحاجة لإدخال كلمة مرور الجذر root قم بإنشاء `/var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla` ومن ثم قم بإضافة الأسطر التالية فيه:

    [org.gnome.cpufreqselector]
    Identity=unix-user:USER
    Action=org.gnome.cpufreqselector
    ResultAny=no
    ResultInactive=no
    ResultActive=yes

قم بتغيير كلمة `USER` إلى اسم المستخدم لديك.

تشتمل حزمة desktop-privilegesAUR المتوفرة في مستودعات AUR على ملف `.pkla` مشابه للملف السابق ولكن وظيفة هذا الملف هي السماح لكل المستخدمين في المجموعة `power` بتبديل المخططات.

## أدوات وضعية الحاسب المحمول

إذا كنت تستخدم Laptop Mode Tools لحلول توفير الطاقة الأخرى فبإمكانك تركها لتُدير لك تردد المعالج، لعمل هذا الأمر يجب عليك إضافة التعريف المناسب إلى المجلد `/etc/modules.d/` (انظر إلى #CPU frequency driver[broken link: invalid section] في الأعلى) ومن ثم قم بالذهاب إلى الملف `/etc/laptop-mode/conf.d/cpufreq.conf` لتعيين مخططات الطاقة والتردد والسياسات أو الخطط، لن تحتاج إلى تحميل وحدات أو خدمات أخرى لضبط مخططات الطاقة أو لكيفية التعامل مع حالات ACPI، يرجى الاطلاع على Laptop Mode Tools لمزيد من التفاصيل.

## استكشاف الأخطاء وإصلاحها

The factual accuracy of this article or section is disputed.

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:CPU frequency scaling (العربية)#)

الدقة الفعلية لهذه المقالة أو هذا القسم ما زالت قيد النقاش. السبب: الرجاء الاطلاع على أول مناقشة في القالب لرؤية شرح مختصر.

- بعض التطبيقات مثل ntop لا تستجيب بشكل جيد لتغيير التردد التلقائي، وفي هذه الحالة يمكن لـ ntop أن يسبب مشاكل في التجزئة وضياع الكثير من المعلومات والبيانات، كما أن مخطط `on-demand` لا يستطيع أن يرفع من تردد المعالج بسرعة عندما يكون التردد الحالي غير كافي لمعالجة حزم البيانات الواردة إلى واجهة مراقبة الشبكة monitored network interface.

- في بعض المعالجات قد يكون الأداء ضعيفاً مع إعدادات مخطط `on-demand` الافتراضية (على سبيل المثال: ملفات الفيديو بصيغة فلاش لا تعمل بسلاسة أو تأثيرات النوافذ تكون مهتزة وغير ثابتة)، في هذه الحالة وبدلاً من تعطيل المخطط نهائياً لحل هذه المشكلة، يمكنك الزيادة من اندفاع التردد وذلك بتخفيض عتبة (نقطة بدء) الزيادة up_threshold لمتغير sysctl لكل معالج على حدى.

قم بالاطلاع على #Changing the on-demand governor's threshold[broken link: invalid section].

- في بعض الأحيان لا يعمل مخطط on-demand بأقصى تردد مُعين له ولكن بتردد أقل منه بقليل، تُحل هذه المشكلة بوضع قيمة أقصى تردد max_freq أعلى قليلاً من القيمة الحقيقية، على سبيل المثال: إذا كان مدى تردد المعالج بين 2.00 GHz و 3.00 GHz فإن وضع max_freq على 3.01 GHz سيكون جيداً.

- بعض مجموعات تعاريف ALSA وبعض كروت الصوت قد تواجه مشكلة تخطي المقاطع الصوتية عند التبديل بين ترددات المعالج، لحل هذه المشكلة يتوجب عليك أن تختار مخطط طاقة ثابت لا يغير من تردد المعالج.

### تقييد التردد من قبل BIOS

هناك بعض تكوينات CPU/BIOS تواجه صعوبة في رفع التردد إلى الحد الأقصى أو رفع التردد بشكل عام، هذه الصعوبة يكون سببها على الأرجح إجراءات BIOS التي تطلب من نظام التشغيل تقييد أقصى تردد يصل إليه المعالج مما يجعل الملف `/sys/devices/system/cpu/cpu0/cpufreq/bios_limit` يضبط قيمة أقصى تردد على قيمة أقل مما هي عليه.

أو قد يكون سبب هذه الصعوبة أنك قمت بضبط معين في أداة إعداد BIOS (التردد، إدارة الحرارة ... إلخ)، أو أن الـ BIOS قديمة أو بها أعطال، أو أن BIOS لديها أسباب خطيرة تجعلها تتحكم بتردد المعالج على طريقتها.

أسباب مثل هذه يمكن أن تحدث عند إزالة البطارية (على افتراض أن حاسوبك من النوع المحمول) أو أنها شبه فارغة أو متعطلة، وبالتالي سيعمل الحاسوب على شاحن الكهرباء فقط، في هذه الحالة فإن مقابس الكهرباء الضعيفة قد لا تتمكن من تزويد الكمية الكافية من الكهرباء لتلبية المتطلبات الكبيرة للنظام بأكمله (خاصة مع عدم وجود بطارية لكي تقوم بالمساعدة) مما يؤدي إلى ضياع في البيانات data أو تلفها أو في أسوأ الأحوال ضرر في العتاد الصلب hardware.

ليس كل أنواع BIOS تُقيد أو تحد من تردد المعالج، لكن على سبيل المثال أغلب IBM/Lenove Thinkpads تفعل ذلك، راجع thinkpad related info on this topic لمزيد من المعلومات المتعلقة بـ Thinkpads.

إذا قمت بالمراجعة ولم تجد أي ضبط غريب أو مريب لـ BIOS وإذا كنت تعلم ما الذي تفعله فإنك تستطيع أن تجعل النواة kernel تتجاهل (ترفض) هذه الحدود التي وضعتها BIOS.

تحذير: تأكد من أنك قرأت وفهمت الجزء السابق، تقييد تردد المعالج CPU frequency limitation هي خاصية أمان لـ BIOS ويجب عدم التلاعب بها

لجعل النواة تتجاهل هذه الحدود يجب تمرير متغير خاص إلى وحدة المعالج، لتجربة هذا الأمر مؤقتاً قم بتغيير القيمة في الملف `/sys/module/processor/parameters/ignore_ppc` من `0` إلى `1`.

أما لجعل هذا التجاهل بشكل دائم قم بالاطلاع على Kernel modules[broken link: invalid section] أو قم بإضافة `processor.ignore_ppc=1` إلى سطر إقلاع النواة أو قم بإنشاء:

    /etc/modprobe.d/ignore_ppc.conf

    # If the frequency of your machine gets wrongly limited by BIOS, this should help
    options processor ignore_ppc=1

Categories:

- Power management (العربية)
- CPU (العربية)
- العربية

Hidden categories:

- Pages with broken section links
- Pages or sections flagged with Template:Accuracy