السلام عليكم ورحمة الله
هذا موضوع كنت قد كتبته لمجلة مجتمع لينوكس العربي، ولم اقم بنقله الى المنتدى بعد، الان ها هو الموضووع:
==================================
توفير الطاقة الكهربائية في لينوكس
ربما تعد البطارية ابرز صفة تميز الاجهزة المحمولة (Laptop) عن الاجهزة المكتبية (Desktops)، لما فيها من فائدة تظهر عند الاماكن التي لا تتوفر فيها مصدر تيار كهربائي.
لهذا لسبب، وانطلاقا من هذه الاهمية، فان توفير الطاقة الكهربائية المخزنة في البطارية امر مهم جدا عند استخدام الاجهزة المحمولة.
[B]Advanced Configuration and Power Interface – ACPI[/B]
اغلب خيارات توفير طاقة البطارية تعتمد في عملها على ACPI، لهذا لسبب فان اول خطوة علينا عملها هو التاكد ان خدمة ACPI تعمل، في حال كانت الخدمة متوقفة، قم بتشغيلها بالطريقة التالية:
كود:
[[email protected] ~]# /etc/init.d/acpid restart
/lib/modules/2.6.*/kernel/drivers/acpi
يتم تحميل اغلب هذه الوحد باستثناء 3 منها وهي:
acer_acpi, asus_acpi, toshiba_acpi
من اسمائها، يمكن فهم وظيفتها تقريبا، فـالوحدة البرمجية acer_acpi تتعلق بالاجهزة المحمولة من النوع Acer، و asus_acpi تتعلق بالنوع Asus بينما toshiba_acpi متعلق باجهزة Toshiba.
كما ذكرت سابقا، هذه الوحد البرمجية عادة لا يتم تحميلها تلقائيا، لذا عليك تحميل النوع الذي يوافق جهازك يدويا.
ملاحظة: يمكنك تحميل الوحدة البرمجية الخاصة بجهازك باستخدام الامر:
كود:
[[email protected]]# modprobe acer_acpi
cat /proc/cmdline اذا ظهر الخيار، فانه تم تمريره، سيكون عليك اعادة تشغيل التوزيعة وازالته من Grub او LILO
مراقبة الاستهلاك:
اثناء تطبيق خيارات توفير طاقة البطارية، عليك مراقبة كمية الاستهلاك لتعلم ان كان الخيار المفعل ذو قيمة اقتصادية للبطارية او لا.
تنبيه: من الان وصاعدا، افصل كل مصادر الطاقة الكهربائية من الجهاز المحمول، يجب ان تكون على البطارية حتى تستطيع الاستفادة من الخيارات.
يمكنك القاء نظرة عامة على استهلاك البطارية باستخدام الامر التالي: (يجب ان يكون ACPI مفعل ويعمل)
cat /proc/acpi/battery/BAT0/state
ملاحظة: BAT0 يختلف من جهاز محمول الى اخر
تنفيذ الامر السابق سيعرض المخرجات التالية (المخرجات تختلف من جهاز محمول لاخر.):
كود:
[[email protected]]# cat /proc/acpi/battery/BAT1/state present: yes capacity state: ok charging state: discharging present rate: 1188 mA remaining capacity: 1400 mAh present voltage: 1 mV
present rate : يدل على كمية الاستهلاك
remaining capacity : يدل على الطاقة المتبقية
ملاحظة: مدة عمل البطارية يعتمد على كمية الطاقة التي يتم استهلاكها، لهذا السبب، ما يهمنا هو كيفية تقليل استهلاك الطاقة الى اقصى حد ممكن، بحيث نزيد من فترة عمل البطارية.
في هذا المثال، لاحظ ان كيمة الاستهلاك معروضة بالـ Milli-Ampere - mA. وهذا يصعب علينا قليلا معرفة الكمية المستهلكة اذ سنحتاج الى عملية حسابية، حيث سيكون علينا ضرب كمية الاستهلاك بقدرة البطارية (ستجدها مكتوبة على البطارية نفسها).
في هذا الجهاز، القدرة هي 14.8V
بضرب القيمة (1188 × 14.8 = 17.583)، اذا كمية الاستهلاك هي تقريبا 18 واط في الساعة والطاقة المتبقية هي (1400 × 14.8 = 20.720) وهي كافية لعمل ساعة وربع تقريبا اذا بقينا على هذا المعدل.
ملاحظة: في بعض الاجهزة المحمولة، تعرض القيم بالـ mW بدل من mA في هذه الحالة لن تحتاج الى اي عملية حسابية.
ملاحظة: يمكنك تحديث معلومات البطارية بشكل تلقائي كل 2 ثانية باستخدام الامر
كود:
[[email protected]]# watch cat /proc/acpi/battery/BAT1/state
ساعة المعالج (Processor Clock)
ربما المعالج هو اول من نفكر فيه عندما يتعلق الموضوع بتوفير طاقة البطارية وخاصة انه وحده يستهلك ما يقارب من 50% من طاقة البطارية.
خطوات العمل:
قم بتثبيت الحزمة powernowd
ديبيان وابناؤه (apt-get install powernowd)
تحميل الوحد البرمجية الخاصة بالنواة (Kernel Modules) التالية:
كود:
[[email protected]]# modprobe cpufreq_ondemand [[email protected]]# modprobe cpufreq_powersave [[email protected]]# modprobe acpi-cpufreq اعادة تشغيل الخدمة powernowd
cpufreq-info
* يمكنك مراقبة تغير تردد المعالج باستخدام
كود:
watch cat /proc/cpuinfo
فاذا استخدمنا النموذج ondemand سنلاحظ ان تردد المعالج سيتغير بحسب الاستخدام (سيزيد من سرعة التردد كلما احتاج).
اما في حال استخدام النموذج powersave فانه سيبقى في اقل تردد ممكن، والذي سيوفر اكبر كمية ممكنة من الطاقة.
يمكنك تغيير النموذج الذي تريده بعدة طرق حيث توفر الواجهات الرسومية ادوات وبرامج لهذا الغرض، الا انني ساستخدم سطر الاوامر لفعل هذا (الاوامر ستعمل على اي توزيعة لينوكس بغض النظر عن الواجهة الرسومية المستخدمة)
تغيير النموذج (profile) باستخدام سطر الاوامر:
كود:
cpufreq-set -g ondemand or cpufreq-set -g powersave
ملاحظة:
الاجهزة المحمولة التي تحتوي على معالجات celeron-m لا تدعم الـ speedstep لذا توفير طاقة المعالج في هذه المعالجات لا يعمل.
الشاشة:
بعد تقليل الساعة الخاصة بالمعالج، فان الخطوة التالية في تقليل اضاءة الشاشة حيث انها ايضا من كبار متسهلكي الطاقة (تاتي بعد المعالج مباشرة).
في كثير من الاجهزة المحمولة، فرق الطاقة بين اعلى اضاءة واقل اضاءة يكون حوالي 10 واط.
في كثير من الاجهزة المحمولة يمكنك تعديل الاضاءة باستخدام الاختصارات الموجودة في لوحة المفاتيح، بحيث تقلل الاضاءة الى افضل نسبة لك
في الحالات التي لا تستطيع تعديل الاضاءة من خلال لوحة المفاتيح، يمكنك تعديلها من خلال ملف ما موجود داخل الدليل /proc
في حال كنت تملك جهاز محمول من نوع Asus مثلا يمكنك تعديل الاضاءة من خلال الملف
/proc/acpi/asus/brn/ (يجب ان تكون الوحدة البرمجية asus_acpi محملة في النواة).
هذا الملف يحمل رقم بين 0 و 15. حيث هذه الارقام هي نسبة الاضاءة
يمكنك تعديل الاضاءة باستخدام
كود:
echo 3 > /proc/acpi/asus/brn او echo 10 > /proc/acpi/asus/brn
ايضا يمكنك توفير كمية من الطاقة بازالة شاشة التوقف واستبدالها بايقاف تشغيل الشاشة كليا، وهذا يمكن من خلال الاوامر التالية:
كود:
xset +dpms xset dpms 0 0 120
بطاقة الشبكة اللاسلكية (Wireless):
بطاقات الوايرليس ايضا لها دور ملحوظ في استهلاك الطاقة، لذا يفضل ان تقوم باغلاق بطاقة الشبكة اللاسلكية كليا اذا لم تكن تستخدمها (اغلقها باستخدام الازرار الخاصة الموجودة على الجهاز). ونفس الكلام ينطبق على البلوتوث وبطاقات الـ pcmcia والـ firmwire والـ USB
ولكن اذا كنت مضطرا لاستخدامها، ففي هذه الحالة، يمكنك ايضا ان توفر القليل من الطاقة خاصة اذا كانت البطاقة لديك تعمل على Intel chipset حيث توفر خاصية توفير طاقة مثل المعالجات.
لتقليل استهلاك الطاقة، نفذ الامر التالي:
كود:
iwpriv eth1 set_power 5
بتفعيل خاصية توفير الطاقة في الشبكة اللاسلكية ستلاحظ ان نسبة الاستهلاك تقل الى قريب ال 10 واط تقريبا
بطاقة الشبكة:
في الاجهزة المحمولة التي تحتوي على بطاقات شبكة جيجا بيت وتحتوي على Intel chipset
يمكنك ايضا ان توفر القليل من الطاقة بتقليل سرعة البطاقة نفسها من 1000 الى 100.
ويمكن عمل هذا باستخدام الامر:
كود:
ethtool -s eth0 autoneg off speed 100
كود:
ethtool -s eth0 autoneg off speed 1000
القرص الصلب:
بالرغم ان القرص الصلب ليس مستهلك كبير للطاقة مثل المعالج والشاشة، الا انه يستهلك ما يقارب 3-4 واط (يعتمد على الموديل)
ولحسن حظنا، ايضا يمكننا ان نوفر القليل من الطاقة مع القرص الصلب
احدى خيارات توفير طاقة القرص الصلب هي استخدام الخيار noatime مع الامر mount.
هذا الخيار يمنع النظام من تعديل معلومات اخر وصول (last access) الخاص بالملف او المجلد (يمكنك الحصول على معلومات اخر وصول باستخدام الامر stat).
عند استخدام الخيار noatime، فان اداء القرص الصلب سيتحسن وفي نفس الوقت سيوفر القليل من الطاقة لانه لن يكتب على القرص الصلب كلما شاهدت ملف.
لاستخدام هذا الخيار، حرر الملف /etc/fstab/ واضف الخيار noatime الى كل الاقسام ما عدا swap
مثال:
كود:
/dev/sda1 / ext3 defaults,noatime 0 1 /dev/sda2 /media/sda2 ext3 defaults,noatime 0 0
في حال كنت تريد تطبيق الخيار الجديد مباشرة دون اعادة تشغيل الجهاز، يمكنك تنفيذ الامر التالي
كود:
mount -o remount,noatime / mount -o remount,noatime /media/sda2
كود:
hdparm -B 1 -S 24 /dev/sda
لاحظ الرقم 24 لو ضربته في 5 ستحصل على 120 ثانية (دقيقتين).
لو اردت مثلا ايقاف تشغيل القرص الصلب كل دقيقة (60 ثانية، 60/5 = 12) فاننا نستخدم الامر كالاتي
hdparm -B 1 -S 12 /dev/sda
نواة لنيوكس:
اذا كنت تستخدم نواة احدث من 2.6.19 فانه ايضا يمكن تفعيل وضعية اسمها laptop-mode الامر الذي يجعل النواة ايضا توفر الطاقة.
كود:
echo 5 > /proc/sys/vm/laptop_mode
بشكل افتراضي، النواة تسجل الـ buffer في القرص الصلب كل 5 ثوان الامر الذي يقلل من نسبة ضياع البيانات في حال حدوث فصل في التيار الكهربائي او ايقاف تشغيل الجهاز بالطريقة الخاطئة (بالضغط على زر التشغيل مباشرة مثلا).
بالرغم ان هذا الخيار يحفظ البيانات ولكننا لسنا معرضين لخطر فصل التيار فجاة حيث اننا نعمل على البطارية لذا يمكننا تعديل هذا الخيار لانه يجعل القرص الصلب في حالة انشغال مستمرة.
يمكننا زيادة فترات كتابة الـ buffer الامر الذي سيقلل تشغيل القرص الصلب باستمرار.
لو اردنا زيادة الوقت الى دقيقتين بدل 5 ثاوان فان الاعداد سيكون كالتالي:
كود:
echo 12000 > /proc/sys/vm/dirty_writeback_centisecs
الخاتمة:
باستخدام هذه الاعدادات مجتمعة، فان الجهاز اصبح يستهلك معدل 8 الى 10 واط والبطارية التي كانت لا تدوم اكثر من ساعتين اصبحت تدوم الان قرابة الـ 4 ساعات.
ولا ننسى ذكر البرنامج powertop المتوفر في الموقع http://www.lesswatts.org وهذا البرنامج يقوم بعرض البرامج التي تستهلك كميات كبيرة من الطاقة حيث يمكنك ايقاف تشغيلها لتوفر المزيد من الطاقة.
تعليق