หลายคนคงเคยเห็นว่า android ของเรามีตัวเลือกให้ตั้งค่า cpu governor ได้ แต่บางคนก็ไม่เคยเห็น มันขึ้นอยู่กับรอมที่ลงในโทรศัพท์ของเรา
ทบทวน: cpu governor ก็คือ การปรับแต่งให้เครื่องเราลื่นขึ้น/น้อยลง แลกกับการบริโภคแบตเตอรี่ที่มากขึ้น/น้อยลง คล้ายๆ กับ concept ของ profile นั่นเอง
บังเอิญวันนี้ผมสงสัยว่าค่า governor แต่ละแบบมันต่างกันยังไง จึงไปค้นอากู๋ แล้วเจอคำตอบ จึงถือโอกาสมาเล่าให้เพื่อนๆ ฟังด้วยเลย
- performance = บังคับ cpu ให้ทำงานที่ความเร็วสูงสุดตลอดเวลา สูบแบต แต่เร็วปรี๊ด
- smartass = มาใหม่สุด คล้ายกับ interactive แต่มีการปรับปรุง code ใหม่ทั้งหมด ให้มีประสิทธิภาพมากขึ้น มีผู้ให้ความเห็นว่า smartass คือ governer ที่ดีที่สุดในตอนนี้ โดยสามารถตอบสนองได้ดีกว่าการปรับค่าความเร็ว min- max แบบเดิมๆ ส่วนเรื่องพลังงานยังไม่มีการยืนยันว่าประหยัดกว่า แต่จากการสังเกตพบว่า เครื่องที่ใช้ smartass มักจะทำงานอยู่ที่ความเร็ว cpu ต่ำเป็นเวลานานกว่า นั่นหมายถึงว่าน่าจะกินพลังงานน้อยกว่าในทางทฤษฎี
- interactive = พึ่งมีไม่นาน เป็นการเปลี่ยนวิธีคิดในการเร่งความเร็ว cpu ใหม่ โดยจากเดิมที่ cpu จะกำหนดค่าความเร็วไว้ล่วงหน้าจากปริมาณงานที่เข้าคิวรออยู่ เปลี่ยนเป็นรอดู workload ของ cpu ก่อน ใช้เวลาซักประมาณ 1-2 tick ของ cpu ถ้า load เป็น 100% ก็จะเร่งความเร็วขึ้นไปเรื่อยๆ จนกว่าจะถึงค่าความเร็วสูงสุดหรือ load ลดลงเหลือไม่ถึง 100% สำหรับเวลา scale down ก็เช่นกัน จะไม่พรวดพราดลดความเร็วลงต่ำสุด โดยจะรอดูซักแปบนึงแล้วค่อยลดความเร็วไปเรื่อยๆ
- ondemand = เป็นค่ามาตรฐานของ android ทุกเครื่อง ความเร็วของ cpu จะเปลี่ยนแปลงตามความหนักเบาของงานที่ทำอยู่ โดยจะวิ่งอยู่ระหว่าง ค่า min – max ที่กำหนดโดย kernel และ cpu ของเครื่องนั้นๆ เมื่อใดก็ตามที่ โปรแกรมต้องการพลังในการประมวลผล ความเร็ว cpu จะกระโจนไปที่ค่า max อย่างรวดเร็ว ปัจจุบันยังถือเป็นค่าที่แนะนำให้ใช้ เพราะยอมรับกันว่าเป็นจุดที่เกิดประสิทธิภาพสูงสุด (ดีกว่า conservative และ userspace)
- conservative = คล้ายกับ ondemand แต่ความเร็วของ cpu จะไม่กระโจนพรวดเดียวไปที่ค่า max โดยจะค่อยๆ ไต่ระดับขึ้นไป ผลในทางทฤษฎีคืออายุการใช้งานแบตนานขึ้น แต่เครื่องอาจจะตอบสนองช้าลงไปบ้าง ปัจจุบันไม่ค่อยนิยม
- userspace = คือการที่ยอมให้ application ต่างๆ กำหนดค่าความเร็ว cpu ที่ต้องการได้ ในปัจจุบันไม่เป็นที่นิยม
- powersave = บังคับ cpu ให้ทำงานที่ความเร็วต่ำสุดตลอดเวลา
หมายเหตุ: ผมแปลมานะครับ และก็ไม่ใช่เซ๊ยน linux ถ้ามีจุดผิดก็เชิญผู้รู้จริงคอมเมนท์ได้ครับ
ที่มา: เยอะครับ หลักๆ ก็เวปบอร์ดที่เกี่ยวกับโปรแกรม SetCPU
แหล่มๆ
ปกติใช้ setcpu ปรับเป็น interactive
ปิดหน้าจอก็ลดความเร็วลงมา ประหยัดแบตดี
ขอบคุณครับ
ขอแจมเท่าที่รู้นะครับคุณ chirameto
ส่วนใหญ่ผมจะใช้อยู่ 3 โหมด ondemand performance และ Smartass
ซึ่ง Smartass จะประหยัดแบตมากกว่าโหมดอื่น เพราะมันจะใช้ CPU สูงสุด 60-70% ต่ำสุด 25-30% แล้วแต่ล่ะคนจะเขียนโค๊ดไว้ที่เท่าไหร่ แต่ก็มีบางคนก็ตั้ง MAX ไว้แค่ 50 เพื่อประหยัดพลังงานให้มากที่สุด แต่อาจจะอืดไปเลยเวลา CPU ต้องรันโปรแกรมหนัก ๆ ไหนจะเรื่องการตั้งค่า DEFAULT_UP_MIN_FREQ, DEFAULT_SLEEP_MAX_FREQ, DEFAULT_AWAKE_MIN_FREQ , DEFAULT_RAMP_UP_STEP ที่แต่ล่ะคนก็มีการตั้งค่าก่อนคอมไพล์ไว้ไม่เท่ากัน
สำหรับผมแล้ว Smartass ก็ยังไม่เหมาะสำหรับการเปิดเครื่องรอรับสายเครื่อง เพราะมันโหลด CPU ที่ 25-30% โหมดที่ประหยัดแบตเวลาเปิดเครื่องทิ้งไว้น่าจะเป็น Ondemand หรือ Powersave เพราะ CPU จะวิ่งลงไ, ปต่ำสุดตามที่ตั้งไว้ ซึ้งส่วนใหญ่จะอยู่ที่ 122 -245MHz ปัจจุบันบางรอมก็ยังไม่มี Smartass แต่ก็สามารถเพิ่มได้ตอนคอมไพล์ เคอร์เนล
โหมดต่างๆ จึงขึ้นอยู่กับคนเขียนว่าตั้งค่าไว้เท่าไหร่ อย่างรอมเดียวกัน ใช้ Smartass Governor เหมือนกัน แต่ต่าง kernel กัน การประหยัดก็ไม่เท่ากัน ใครเขียนได้เก่ง ก็ทำให้รอมมีประสิทธิภาพมากกว่า
แต่ยังไงก็ตามขึ้นอยู่กับผู้ใช้ เลือกใช้แต่ละโหมดให้เหมาะกับการใช้งานเพื่อประหยัดพลังงาน เช่น เปิดโหมด Smartass เวลาใช้งานทั่วไป หรือเลือกโหมด Ondemand เวลาเปิดเครื่องรอรับสาย ใช้ Performance เวลารันโปรแกรมหนัก ๆ ขยันปรับแต่งบ่อยสำหรับคนที่ซีเรียสเรื่องแบต ส่วนผมตอนนี้ใช้มันแต่ Performance เพราะทำงานอยู่ที่บ้านชาร์ตมันทั้งวันยังได้เลย (ฮา)