快轉到主要內容

Android手機CPU關核心降頻省電,以高通SD888為例

· 民國115年丙午年
·
切換繁體/簡體
分類   智慧型手機 Root與刷機
標籤   Magisk
目錄

在聽Paul Yang - Everytime You Go Away的時候做的實驗

討論關掉手機核心達成省電的方法。

為了拯救Xperia 1 III的高通SD888續航力,踏上了路途。

後來又發現,其實不應該做這種暴力的操作,只要有一個針對電源模式極度優化的演算法APP就能解決了。

Hey, if we can solve any problem. Then why do we lose so many tears?

評析
#

入手SD888的第一天起,我就察覺到發熱耗電問題。

靠著刷SD888 Efficient Turning模組,稍微降頻壓制了發熱,可是依然耗電

我考慮用SecondScreen將手機解析度降為720p(1700x720,DPI 300),但是我覺得這個效果跟開啟深色模式一樣微乎其微。還不如進一步降低核心頻率,或者乾脆把SD888的大核和中核全部關掉,只剩下小核在線上。不過這樣就犧牲了玩遊戲效能。

手機最重要的應該是好攜帶與長續航,其他都是其次。唉,習慣Xperia 10 V(SD695 + 5000mAh)的8小時SOT(螢幕使用時間)之後,不管換哪支續航都不合我意

可旗艦機就算效能強又如何,不過是玻璃大砲。根據GSMArena資料,恐怕只有200g以上的超重手機能超越8小時SOT,或者起碼得是8Gen3處理器才有最佳能效比。Pixel 6a縱然相對省電,可是Tensor G1架構怎麼調都是只有5小時SOT。

現在使用Xperia 1 III + LineageOS,4500mAh電池健康度80%,為了解決SD888的發熱與耗電導致SOT只有4小時的問題,我嘗試調教一下系統深處的東西,總覺得降解析度到720p跟開啟深色模式一樣沒什麼效果,還會影響視覺效果,維持1080p就好。

SD888(1x 2.84GHz X1 + 3x 2.4GHz Cortex A78 + 4x 1.8GHz Cortex A55)

動機來自SD695(2x 2.2GHz Cortex A78 + 6x 1.8GHz Cortex A55),在Xperia 10 V的使用經驗,讓我想要追求8小時SOT

這根本不可能的事情!這個要求我知道很不合理,好比二戰日本海軍要求零戰速度快又要輕量又要能飛3000公里一樣瘋狂。但是我們可以無限逼近。

這是一個自廢武功的操作,實際上,或許我不需要那麼多強力的效能。我不涉及複雜的能效曲線設計,不去算哪個頻率比較好,不去折騰kernel governor。就只是暴力的關掉我不需要的核心,達成省電效果。

我發現Android 16現在不能用SmartPack Kernel Manager(Kernel Auditor的fork)關核心與調整頻率了,它會自己彈回去。這樣的話就只能用Magisk模組去壓了,它有常駐系統服務的功能。中國開發者有製作過SD888 Efficient Tuner模組,可以抑制發熱但還是耗電。我以這個模組為藍本,半vibe coding的協助下寫了我第一個Magisk模組。透過傳一些參數,關掉X1超大核,中小核限制在2GHz以下,並將核心頻率調整到類似SD695的水準。

預期目標
#

這樣歸納出了SD888的三檔電源模式,SOT時間來自AccuBattery估算:

  • 日用省電小卡頓模式:4x Cortex A55,SOT時間約6小時
  • 日用流暢模式:2x Cortex A78 + 4x Cortex A55,SOT時間約5小時
  • 效能全開模式:1x Cortex X1 + 3x Cortex A78 + 4x Cortex A55,稍微降頻防止過熱,SOT時間約4小時

1x Cortex X1 + 3x Cortex A78 + 4x Cortex A55降頻,這樣SOT有無進步呢?嗯,提升不明顯,SOT撐死就從原本的4小時提升到5小時。這續航看起來沒救了,我還是別浪費錢換電池了吧。

喔,還有一招,大核中核全關掉,只剩4個A55小核在線上,實測就可以有6小時SOT啦。

4x Cortex A55基本上已經把手機弄到變成RK3566開發板的等級了。但是因為Adreno 660 GPU還在線上所以Android UI不至於非常卡,當然120Hz是不可能使用的了。

這個模式連玩FGO都會卡。

相機啟動會頓個5秒,錄1080p60影片會lag。

不過,就我大部份的操作場景來說(瀏覽器看社群網站 + 背景播放音樂),滑動還是流暢的,其實我是可以忍受。

利用Magisk模組關核心
#

  1. 有Root權限比較方便。用Magisk模組來關掉核心,只要往/sys/devices/system/cpu/cpuX/online傳入0就能關閉核心。

  2. SD888 Efficient Tuner為範本,只要修改Magisk模組中的service.sh,設定要常駐執行的指令就行了。然後修改module.prop數值,壓縮為.zip刷入。

展開:日用省電小卡頓模式 4x Cortex A55
#!/system/bin/sh

MODDIR=${0%/*}

# 等系統、thermal、vendor service 完全起來
sleep 35

# CPU governor(保守)
for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
    chmod 644 $gov
    echo schedutil > $gov
done


# 小核 A55(cpu0 1 2 3)
for cpu in 0 1 2 3; do
    chmod 644 /sys/devices/system/cpu/cpu$cpu/cpufreq/scaling_max_freq
done

# 中核 A78 (cpu 4 5 6 7) 全關閉
for cpu in 4 5 6 7; do
    chmod 644 /sys/devices/system/cpu/cpu$cpu/cpufreq/scaling_max_freq
    echo 0 > /sys/devices/system/cpu/cpu$cpu/online
done

chmod 644 /sys/devices/system/cpu/cpu4/online
    echo 0 > /sys/devices/system/cpu/cpu4/online

chmod 644 /sys/devices/system/cpu/cpu5/online
    echo 0 > /sys/devices/system/cpu/cpu5/online

    chmod 644 /sys/devices/system/cpu/cpu6/online
    echo 0 > /sys/devices/system/cpu/cpu6/online

# 大核 X1(cpu7)關閉
chmod 644 /sys/devices/system/cpu/cpu7/online
echo 0 > /sys/devices/system/cpu/cpu7/online


# GPU(Adreno 660)降頻

chmod 644 /sys/class/kgsl/kgsl-3d0/max_pwrlevel
echo 5 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel

# Scheduler(減少升核)

if [ -e /proc/sys/kernel/sched_upmigrate ]; then
    echo 95 > /proc/sys/kernel/sched_upmigrate
fi

if [ -e /proc/sys/kernel/sched_downmigrate ]; then
    echo 85 > /proc/sys/kernel/sched_downmigrate
fi

# cpuset(背景只跑小核)

if [ -e /dev/cpuset/background/cpus ]; then
    echo 0-3 > /dev/cpuset/background/cpus
fi

if [ -e /dev/cpuset/system-background/cpus ]; then
    echo 0-3 > /dev/cpuset/system-background/cpus
fi

exit 0
展開:日用流暢模式 2x Cortex A78 + 4x Cortex A55
#!/system/bin/sh

MODDIR=${0%/*}

# 等系統、thermal、vendor service 完全起來
sleep 35

# CPU governor(保守)
for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
    chmod 644 $gov
    echo schedutil > $gov
done


# 小核 A55(cpu 0 1 2 3)
for cpu in 0 1 2 3; do
    chmod 644 /sys/devices/system/cpu/cpu$cpu/cpufreq/scaling_max_freq
done

# 中核 A78(cpu 4 5 6)關閉1中核並降頻
chmod 644 /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
echo 2227200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq

chmod 644 /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
echo 2227200 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq

chmod 644 /sys/devices/system/cpu/cpu6/online
echo 0 > /sys/devices/system/cpu/cpu6/online

# 大核 X1(cpu7)關閉
chmod 644 /sys/devices/system/cpu/cpu7/online
echo 0 > /sys/devices/system/cpu/cpu7/online


# GPU(Adreno 660)降頻

chmod 644 /sys/class/kgsl/kgsl-3d0/max_pwrlevel
echo 5 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel

# Scheduler(減少升核)

if [ -e /proc/sys/kernel/sched_upmigrate ]; then
    echo 95 > /proc/sys/kernel/sched_upmigrate
fi

if [ -e /proc/sys/kernel/sched_downmigrate ]; then
    echo 85 > /proc/sys/kernel/sched_downmigrate
fi

# cpuset(背景只跑小核)
if [ -e /dev/cpuset/background/cpus ]; then
    echo 0-3 > /dev/cpuset/background/cpus
fi

if [ -e /dev/cpuset/system-background/cpus ]; then
    echo 0-3 > /dev/cpuset/system-background/cpus
fi

exit 0
  1. 關掉核心之後可以用Termux執行sudo htop指令,檢查CPU核心是否真的顯示offline了。

與其關核心還不如使用Scene
#

經過神人推薦,發現了這個中國神人開發的APP。其實Scene的效果就很好了,全部核心暴力關掉還不如優化過的演算法調度。它可以在不暴力關閉核心的情況下達成很好的省電效果。

而且這個APP也有關核心的功能。

安裝Scene,開啟均衡模式。不需要刷SD888 Efficient Tuning,讓它自己在背景調控頻率就行了

在不關閉任何核心的情況下,Scene達成的續航力效果,從AccuBattery的資料來看,幾乎跟Cortex A55 x4的成果相當

相關文章

Sony Xperia 10 V的Root與性能優化,改善卡頓、裝Dolby Atmos提昇喇叭外放
分類   智慧型手機 Root與刷機
標籤   Sony Xperia Magisk
2026年Magisk推薦安裝的模組,提升手機效能、擋廣告、自定義主題
分類   智慧型手機 Root與刷機
標籤   Magisk KernelSU Xposed
Magisk通用安裝教學,systemless的Android手機Root方案
分類   智慧型手機 Root與刷機
標籤   Linux Kernel Magisk Xposed

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。