MTK平台配置多核cpu oneline和gpu freq提升系统性能

硬件平台:MT6797

软件平台:Android 6.0

今日在调整系统跑分性能,我们的板子用的MT6797,板子起来之后,通过adb命令行,查看cpu的状态,因为是十核,因此写了一个精悍的小脚本获取各cpu状态:

#!/system/bin/sh

#echo "1" > /sys/devices/system/cpu/cpu6/online
#cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
#echo "1391000" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_setspeed

CPU_PATH=/sys/class/thermal
CPU_FREQ_BASE=/sys/devices/system/cpu

echo "#####################################"
for i in `seq 11`
do
    ((i=$i-1))
    echo "Cpu$i's Temp is: `cat $CPU_PATH/thermal_zone$i/temp`"

    online=`cat $CPU_FREQ_BASE/cpu$i/online`
    if [ $online = "1" ];then
        echo "Cpu$i's Freq is: `cat $CPU_FREQ_BASE/cpu$i/cpufreq/scaling_cur_freq`"
    else
        echo "Cpu$i is OFF"
    fi  
    echo -e "\r"
done
echo "#####################################"

push到system/bin目录,运行结果如下:

root@aeon6797_6c_m:/ # cpu_stat.sh                                             
#####################################
Cpu0's Temp is: 30000
Cpu0's Freq is: 715000

Cpu1's Temp is: 32500
Cpu1's Freq is: 715000

Cpu2's Temp is: -127000
Cpu2's Freq is: 715000

Cpu3's Temp is: 26123
Cpu3's Freq is: 715000

Cpu4's Temp is: 60000
Cpu4's Freq is: 1846000

Cpu5's Temp is: 1
Cpu5 is OFF

Cpu6's Temp is: 29000
Cpu6 is OFF

Cpu7's Temp is: 32000
Cpu7 is OFF

Cpu8's Temp is: 31300
Cpu8 is OFF

Cpu9's Temp is: 34300
Cpu9 is OFF

Cpu10's Temp is: 27700
/system/bin/cpu_stat.sh[19]: cat: /sys/devices/system/cpu/cpu10/online: No such file or directory
/system/bin/cpu_stat.sh[19]: [: 1: unexpected operator/operand
Cpu10 is OFF

#####################################

可以看到cpu0~4处于online态,后边都是offline态,通过一个设置状态的脚本把后边五个开启:

cpuset.sh如下:

#!/system/bin/sh

echo "================cpu set=================="

# 0~3 max:1391000
# 4~7 max:1846000
# 8~9 max:2314000

for i in `seq 10`
do
    ((i=$i-1))
#   ((j=$i+4))

    echo "performance" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor

    if [ $i -ge "4" ] && [ $i -le "7" ]; then
        echo "1846000" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_setspeed
        echo "1" > /sys/devices/system/cpu/cpu$i/online
    elif [ $i -le "3" ]; then
        echo "1391000" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_setspeed
    else
        echo "2314000" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_setspeed
        echo "1" > /sys/devices/system/cpu/cpu$i/online
    fi  
done

echo "================set finish================"

执行完成之后,再用第一个脚本查看结果:

root@aeon6797_6c_m:/ # cpu_stat.sh                                             
#####################################
Cpu0's Temp is: 30000
Cpu0's Freq is: 1391000

Cpu1's Temp is: 35600
Cpu1's Freq is: 1391000

Cpu2's Temp is: -127000
Cpu2's Freq is: 1391000

Cpu3's Temp is: 28626
Cpu3's Freq is: 1391000

Cpu4's Temp is: 60000
Cpu4's Freq is: 1846000

Cpu5's Temp is: 2
Cpu5's Freq is: 1846000

Cpu6's Temp is: 0
Cpu6's Freq is: 1846000

Cpu7's Temp is: 15000
Cpu7's Freq is: 1846000

Cpu8's Temp is: 42500
Cpu8's Freq is: 2314000

Cpu9's Temp is: 38000
Cpu9's Freq is: 2314000

Cpu10's Temp is: 30300
/system/bin/cpu_stat.sh[19]: cat: /sys/devices/system/cpu/cpu10/online: No such file or directory
/system/bin/cpu_stat.sh[19]: [: 1: unexpected operator/operand
Cpu10 is OFF

#####################################
可以看到cpu很雄壮的开始跑了。

GPU 频率控制相关部分稍后奉上。。。

今儿把gpu满频工作的部分追加上,具体改动如下:

--- a/kernel-3.18/drivers/misc/mediatek/base/power/mt6797/mt_gpufreq.c
+++ b/kernel-3.18/drivers/misc/mediatek/base/power/mt6797/mt_gpufreq.c
@@ -272,6 +272,7 @@ static gpufreq_ptpod_update_notify g_pGpufreq_ptpod_update_notify;
 /* Full Yield */
 /* 20160119 type = 8*/
 static struct mt_gpufreq_table_info mt_gpufreq_opp_v7_tbl_e1_0[] = {
+#if 0
        GPUOP(GPU_DVFS_FREQ1, GPU_DVFS_VOLT0, 0),
        GPUOP(GPU_DVFS_FREQ2, GPU_DVFS_VOLT1, 1),
        GPUOP(GPU_DVFS_FREQ3, GPU_DVFS_VOLT4, 2),
@@ -279,6 +280,10 @@ static struct mt_gpufreq_table_info mt_gpufreq_opp_v7_tbl_e1_0[] = {
        GPUOP(GPU_DVFS_FREQ5, GPU_DVFS_VOLT9, 4),
        GPUOP(GPU_DVFS_FREQ6, GPU_DVFS_VOLT11, 5),
        GPUOP(GPU_DVFS_FREQ8, GPU_DVFS_VOLT13, 6),
+#endif
+
+       //synative GPU always running at full speed
+       GPUOP(GPU_DVFS_FREQ0, GPU_DVFS_VOLT0, 0),

 };
 /* 20151221 type = 0*/
 static struct mt_gpufreq_table_info mt_gpufreq_opp_tbl_e1_0[] = {

gpu配置包含一个table表,分为不通的档,每档对应不通的电压值,我们就是把表配置为固定的电压和最高频率。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值