ประหยัดพลังงานด้วย PowerTOP

คุณใช้โน้ตบุ๊กใช่ไหม? ขณะใช้แบตเตอรี่คุณสามารถประหยัดพลังงานเพื่อยืดเวลาการจ่ายไฟให้นานที่สุด โดยใช้เครื่องมือตรวจหาโปรแกรมที่เป็นตัวการดูดพลังงานโดยไม่จำเป็น แล้วปิดเป็นเรื่อง ๆ ไป คือ powertop

หลักการทั่วไปคือ จะตรวจหาโพรเซสหรืออุปกรณ์ที่เข้ามาปลุก CPU จากโหมด idle ซึ่งจะทำให้ CPU เข้าสู่โหมดที่ตื่นตัวและใช้พลังงาน รวมทั้งตรวจหาอุปกรณ์ที่มักไม่จำเป็น หรือค่าตั้งของระบบที่ยังกินพลังงานอยู่ แล้วให้คำแนะนำซึ่งเราสามารถเลือกสั่งปรับตามที่แนะนำได้

ติดตั้งแพกเกจ powertop แล้ว ก็เรียกคำสั่งในฐานะ root:

# powertop

PowerTOP screenshot

ข้อมูลบนหน้าจอจะแบ่งเป็นส่วน ๆ คือ

C state

เป็นโหมดการทำงานของ CPU ในโหมด idle โดย C0 เป็นโหมดที่กำลังทำคำสั่งอยู่ และ C1 ถึง C4 เป็นโหมด idle ซึ่งใช้พลังงานลดหลั่นกันลงไป ยิ่งตัวเลขมากยิ่งใช้พลังงานน้อย และใช้เวลานานในการปลุก โดยปกติถ้าเครื่องไม่ได้ทำงานอะไร CPU ควรอยู่ในโหมด C3 หรือ C4 ให้มากที่สุด

ข้อมูลส่วนนี้จะแสดงอัตราการใช้เวลาในโหมดต่าง ๆ ของ CPU

P state

เป็นโหมดความถี่ของ CPU ตามนโยบายการปรับความถี่ แน่นอนว่าความถี่ต่ำย่อมใช้พลังงานต่ำกว่า และยิ่ง CPU ใช้เวลาในโหมดความถี่ต่ำนาน ก็ยิ่งประหยัดพลังงาน

Wakeups per second

เป็นอัตราการปลุก CPU ต่อวินาที และแถบสีจะเปลี่ยนสีตามระดับการปลุก

การใช้พลังงาน

เป็นการประเมินอัตราการใช้พลังงาน และระยะเวลาการจ่ายไฟจากแบตเตอรี่ที่เหลือ

รายการปลุกสูงสุด

แสดงรายการปลุก CPU สูงสุดจากมากไปน้อย เพื่อให้เห็นว่าโพรเซสหรืออุปกรณ์ไหนกำลังใช้พลังงานสูง จะได้ปรับได้

คำแนะนำ

ตอนท้ายจะเป็นคำแนะนำการปรับค่าตั้งของอุปกรณ์ หรือฆ่าดีมอนที่ไม่จำเป็น เพื่อลดการใช้พลังงานที่ไม่จำเป็น ซึ่งถ้าคุณเห็นด้วย ก็สามารถกดปุ่มคำสั่งด้านล่างได้เลย

การออกจากโปรแกรม ก็กด q

เกร็ดการปรับระบบให้ประหยัดพลังงาน

ที่เว็บของ PowerTOP เอง มี Tips & Tricks สำหรับการปรับระบบเพื่อประหยัดพลังงานหลายเรื่อง โดยมากเป็นปัญหาเก่าที่เคยพบและแก้ปัญหาไปแล้วในซอฟต์แวร์รุ่นใหม่ ๆ แต่ก็มีบางเรื่องที่ยังใช้ได้อยู่

ที่ผมปรับไปในเครื่องตัวเอง ก็มีเช่น:

ปิด bluetooth

ผมแทบไม่ได้ใช้ bluetooth เลยระหว่างทำงาน ก็ควรจะปิดเสีย แล้วเปิดเมื่อต้องการใช้เท่านั้น เป็นการประหยัดพลังงานในการผลิตคลื่นวิทยุ และลดการปลุกการเชื่อมต่อ USB โดยไม่จำเป็น

วิธีปิด ก็ใช้ hciconfig พร้อมกับ unload hci module (มีในคำแนะนำของ PowerTOP):

# hciconfig hci0 down
# modprobe -r hci_usb

หรือปิดอย่างถาวรไปเลยก็แก้ /etc/default/bluetooth ที่บรรทัดนี้:

BLUETOOTH_ENABLED=0

แล้ว restart bluetooth:

# invoke-rc.d bluetooth restart
mount / แบบ noatime

การ mount พาร์ทิชันแบบ noatime ช่วยให้ลดการเขียนดิสก์เพื่อปรับข้อมูลการ access แฟ้มต่าง ๆ แม้จะเป็นแค่การอ่านอย่างเดียวก็ตาม! โดยปกติถ้ามีการแยกพาร์ทิชันรากกับ /home ออกจากกัน ก็อาจจะ mount / ซึ่งมักจะอ่านอย่างเดียวอยู่แล้ว ด้วยตัวเลือก noatime เสีย

# mount -o remount,noatime /

หรือจะแก้แบบถาวร ก็ใส่ตัวเลือกการเมานท์ไว้ใน /etc/fstab ซะเลย เช่น:

...
/dev/sda1   /   ext3    defaults,noatime,errors=remount-ro 0   1
...
Wireless

ปรับโหมดการใช้พลังงานของ wireless ให้น้อยลง ซึ่งแต่ละชิปเซ็ตอาจจะสั่งไม่เหมือนกัน ก็ทำตามที่ PowerTOP ตรวจสอบและแนะนำได้ แต่ต้องระวังว่า การลดการใช้พลังงานจะทำให้ประสิทธิภาพของ wireless ลดลง โดยเฉพาะในกรณีต้องการเปิดบริการอะไรไว้ การลดพลังงานอาจทำให้เครื่องอื่นเชื่อมต่อเข้ามาไม่ได้เลย มีแต่จะเชื่อมต่อออกข้างนอกได้อย่างเดียว เป็นต้น

อีกเรื่องหนึ่งคือ ไปเซ็ต access point ให้ลดอัตราการส่ง beacon จากค่าปกติคือทุก 100ms ให้เป็นทุก 1000ms แทน ก็จะลดอัตราการขัดจังหวะลงได้

beacon เป็นแพ็กเก็ตที่ access point กระจายสัญญาณออกมาเพื่อ sync การทำงานของเครือข่ายไร้สาย ในเอกสารของ PowerTOP บอกว่า ไม่พบว่าการลดอัตราการส่ง beacon ลงจะมีผลกับประสิทธิภาพของเครือข่ายแต่อย่างใด

การ poll CD ของ HAL

HAL จะมี addon ที่คอย poll ไดรว์ CD-ROM อยู่ตลอดเวลาว่ามีการใส่แผ่นหรือยัง แล้วจะได้ส่งสัญญาณไปยังซอฟต์แวร์ต่าง ๆ ผ่าน D-Bus เพื่อที่จะได้เรียกโปรแกรมมาจัดการ

ถ้าในระหว่างนั้น คุณแน่ใจว่าไม่ได้ใช้ซีดีแน่ ๆ ก็แค่สั่ง hal-disable-polling:

# hal-disable-polling --device /dev/cdrom

พอต้องการกลับมาใช้ซีดีอีก ก็ enable ใหม่:

# hal-disable-polling --enable-polling --device /dev/cdrom

มีวิธีเหมือนกัน ที่จะห้ามการ poll CD ของ HAL อย่างถาวร คือใช้ตัวอย่างค่าตั้งจาก /usr/share/doc/hal/examples/no-cd-media-check.fdi โดยคัดลอกไปที่ /etc/hal/fdi/policy/ แล้วปรับค่าตามที่อธิบายใน comment ก่อน restart hal แต่ไม่ขอแนะนำให้ทำ เพราะปรากฏว่าทำให้บางโปรแกรมไม่ยอมอ่านซีดีเอาเลย

เว็บเบราว์เซอร์

อันนี้เป็นเกร็ดทั่วไป ว่าการเปิดเว็บที่มีภาพเคลื่อนไหว จะทำให้ CPU ถูกปลุกอยู่ตลอดเวลา แม้จะเปิดในแท็บที่ถูกบังอยู่ข้างหลังก็ตาม ดังนั้น ถ้าใช้แบตอยู่ วิธีหนึ่งที่จะยืดเวลาจ่ายไฟออกไป คือปิดเว็บที่มีภาพเคลื่อนไหวเสีย

ยังมีเกร็ดอีกหลายข้อครับ ที่ PowerTOP จะช่วยคุณได้ เล่าแค่พอหอมปากหอมคอก็พอ ที่เหลือก็ลองใช้ดูละกัน

Update (2008-07-21 13.58): ปรับข้อมูลการปิดการ poll CD ของ HAL จากการ kill โพรเซส hal-addon-storage มาเป็นการสั่ง hal-disable-polling แทน

Topic: 
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้