إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

توفير طاقة المحمول

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • توفير طاقة المحمول


    السلام عليكم ورحمة الله

    هذا موضوع كنت قد كتبته لمجلة مجتمع لينوكس العربي، ولم اقم بنقله الى المنتدى بعد، الان ها هو الموضووع:

    ==================================


    توفير الطاقة الكهربائية في لينوكس

    ربما تعد البطارية ابرز صفة تميز الاجهزة المحمولة (Laptop) عن الاجهزة المكتبية (Desktops)، لما فيها من فائدة تظهر عند الاماكن التي لا تتوفر فيها مصدر تيار كهربائي.

    لهذا لسبب، وانطلاقا من هذه الاهمية، فان توفير الطاقة الكهربائية المخزنة في البطارية امر مهم جدا عند استخدام الاجهزة المحمولة.

    [B]Advanced Configuration and Power Interface – ACPI[/B]

    اغلب خيارات توفير طاقة البطارية تعتمد في عملها على ACPI، لهذا لسبب فان اول خطوة علينا عملها هو التاكد ان خدمة ACPI تعمل، في حال كانت الخدمة متوقفة، قم بتشغيلها بالطريقة التالية:

    كود:
    [[email protected] ~]# /etc/init.d/acpid restart
    عند تشغيل خدمة ACPI، فان عدد من الوحدات البرمجية (Kernel Modules) يتم تحميلها تلقائيا، وهذه الوحدات البرمجية ضرورية جدا في عمل ACPI وهذه الوحد البرمجية متوفرة في الدليل:
    /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
    على العموم، اذا لاي سبب من الاسباب قمت بتشغيل توزيعتك، وتم تمرير الخيار (acpi=off) الى النواة، فان خدمة 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
    ايضا والجدير بالذكر ان المعالجات الحديثة تستطيع ان تعمل على اكثر من تردد، وتتغير هذه الترددات بخطوات (steps). يمكنك معرفة الخطوات (steps) التي يدعمها معالجك باستخدام الامر:
    cpufreq-info

    * يمكنك مراقبة تغير تردد المعالج باستخدام
    كود:
    watch cat /proc/cpuinfo
    البرنامج cpufreq يسمح لنا باستخدام نماذج (profiles) خاصة تحدد التردد الذي سيعمل عليه المعالج.
    فاذا استخدمنا النموذج ondemand سنلاحظ ان تردد المعالج سيتغير بحسب الاستخدام (سيزيد من سرعة التردد كلما احتاج).

    اما في حال استخدام النموذج powersave فانه سيبقى في اقل تردد ممكن، والذي سيوفر اكبر كمية ممكنة من الطاقة.

    يمكنك تغيير النموذج الذي تريده بعدة طرق حيث توفر الواجهات الرسومية ادوات وبرامج لهذا الغرض، الا انني ساستخدم سطر الاوامر لفعل هذا (الاوامر ستعمل على اي توزيعة لينوكس بغض النظر عن الواجهة الرسومية المستخدمة)


    تغيير النموذج (profile) باستخدام سطر الاوامر:

    كود:
    cpufreq-set -g ondemand
    or
    cpufreq-set -g powersave
    بعد تغيير النموذج وتغيير تردد المعالج، سنلاحظ ان استهلاك الطاقة قل ومعدل الاستهلاك الان بين 13 و 15 واط.

    ملاحظة:
    الاجهزة المحمولة التي تحتوي على معالجات 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
    عند تقليل اضاءة الشاشة، ستلاحظ ان كمية الاستهلاك تقل بحيث يصبح الجهاز يستهلك ما بين 11 و13 واط.

    ايضا يمكنك توفير كمية من الطاقة بازالة شاشة التوقف واستبدالها بايقاف تشغيل الشاشة كليا، وهذا يمكن من خلال الاوامر التالية:

    كود:
    xset +dpms
    xset dpms 0 0 120
    الامر الاول يقوم بتفيل dpms المسؤول عن ايقاف تشغيل الشاشة عبر سوفتوير (software) والامر الثاني يحدد وقت ايقاف تشغيل الشاشة (120 ثانية اي بعد دقيقتين من عدم استخدام الجهاز)

    بطاقة الشبكة اللاسلكية (Wireless):

    بطاقات الوايرليس ايضا لها دور ملحوظ في استهلاك الطاقة، لذا يفضل ان تقوم باغلاق بطاقة الشبكة اللاسلكية كليا اذا لم تكن تستخدمها (اغلقها باستخدام الازرار الخاصة الموجودة على الجهاز). ونفس الكلام ينطبق على البلوتوث وبطاقات الـ pcmcia والـ firmwire والـ USB

    ولكن اذا كنت مضطرا لاستخدامها، ففي هذه الحالة، يمكنك ايضا ان توفر القليل من الطاقة خاصة اذا كانت البطاقة لديك تعمل على Intel chipset حيث توفر خاصية توفير طاقة مثل المعالجات.

    لتقليل استهلاك الطاقة، نفذ الامر التالي:

    كود:
    iwpriv eth1 set_power 5
    ملاحظة: eth1 هو البطاقة اللاسلكية، غيرها الى ما يناسبك. الرقم 5 يعني مستوى التوفير الذي نريده، حيث ان المستوى هو رقم بين 0 (الخدمة غير مفعلة) و 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 لتفعيل خيار توفير الطاقة عندما لا يوجد عمليات تجري على القرص الصلب. لو اردت مثلا ان يتوقف القرص الصلب عن عمله ويدخل مرحلة الـ standby بعد دقيقتين من عدم استخدامه فاننا نستخدم الامر:

    كود:
    hdparm -B 1 -S 24 /dev/sda
    * ملاحظة: الرقم بعد S هو حاصل قسمة ثانية/5
    لاحظ الرقم 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 الخاص بالكتابة على القرص الصلب.
    بشكل افتراضي، النواة تسجل الـ buffer في القرص الصلب كل 5 ثوان الامر الذي يقلل من نسبة ضياع البيانات في حال حدوث فصل في التيار الكهربائي او ايقاف تشغيل الجهاز بالطريقة الخاطئة (بالضغط على زر التشغيل مباشرة مثلا).

    بالرغم ان هذا الخيار يحفظ البيانات ولكننا لسنا معرضين لخطر فصل التيار فجاة حيث اننا نعمل على البطارية لذا يمكننا تعديل هذا الخيار لانه يجعل القرص الصلب في حالة انشغال مستمرة.
    يمكننا زيادة فترات كتابة الـ buffer الامر الذي سيقلل تشغيل القرص الصلب باستمرار.


    لو اردنا زيادة الوقت الى دقيقتين بدل 5 ثاوان فان الاعداد سيكون كالتالي:

    كود:
    echo 12000 > /proc/sys/vm/dirty_writeback_centisecs
    ملاحظة: ارقم 12000 هو بالسينتي ثانية، ويمكنك الحصول عليه بضرب عدد الثوان التي تريدها بـ 100 مثل (120 × 100 = 12000)

    الخاتمة:

    باستخدام هذه الاعدادات مجتمعة، فان الجهاز اصبح يستهلك معدل 8 الى 10 واط والبطارية التي كانت لا تدوم اكثر من ساعتين اصبحت تدوم الان قرابة الـ 4 ساعات.

    ولا ننسى ذكر البرنامج powertop المتوفر في الموقع http://www.lesswatts.org وهذا البرنامج يقوم بعرض البرامج التي تستهلك كميات كبيرة من الطاقة حيث يمكنك ايقاف تشغيلها لتوفر المزيد من الطاقة.


    موقع وثائق لينوكس العربية
    موقع مختص بتوثيق لينكس

    ((شاركنا بمواضيعك، أفكارك، إقتراحاتك، ومساعدتك لنا هي أساس إستمرارنا ... فلا تبخل علينا بما لديك ولو كان بنظرك قليل، فهو بنظرنا الكثير))






  • #2
    جزاك الله خيراً أستاذي مسلم عادل
    موضوع مهم جداً لمستخدمي المحمول.

    تعليق


    • #3
      موضوع رائع أخ مسلم... وأكيد حيفيدني لأن شغلي كله على المحمول
      شكرا لك وبانظار المزيد ...

      تعليق


      • #4
        حياك الله

        تعليق


        • #5
          يعطيك العافية اخوي مسلم

          ان شاء الله اذا اشتريت لابتوب ارجع لدرسك واطبق ^_^

          لاتحرمنا من مواضيعك القيمه
          سبحان الله وبحمده ... سبحان الله العظيم

          تعليق


          • #6
            اشكرك يا مسلم وبارك الله فيك

            Twitter
            : @Linux4SA

            تعليق

            يعمل...
            X