方法一:修改interactive调频策略的target_loads
RK3399默认的调频策略是interactive,此策略同时提供了一些参数供修改,其中最容易理解和修改的参数就是target_loads,介绍如下:
Kernel/Documentation/cpu-freq/governors.txt:
一般情况下,调速器根据 target_loads 参数调整频率,负载超过设定值时提高频率,
反之则下降频率; 该值设置的越低, CPU 越容易提升频率; 单位:%, 频率单位:KHz。
格式是单个目标负载,可选地,后面是 CPU 速度对和以这些速度或以上为目标的 CPU
负载。 冒号可以在速度和相关目标负载之间使用,以提高可读性。例如:85 1000000:90
1700000:99 目标 CPU 负载 85%低于 1GHz 的速度, 90%在 1GHz 或以上,直到 1.7GHz
及以上,目标负载 99%。如果指定了速度,则必须按升序显示。更高的目标负载值通常用
于更高的速度,也就是说,目标负载值通常也以升序出现。默认情况下,所有速度的目标负
载为 90%。
修改 target_loads 方法,如下红色字体:
在 device/rockchip/rk3399/init.tablet.rc 中:
on boot
# update cpusets feature nodes for rk3399 tablet
write /dev/cpuset/foreground/cpus 0-5
write /dev/cpuset/foreground/boost/cpus 4-5
write /dev/cpuset/background/cpus 0
write /dev/cpuset/system-background/cpus 0-3
write /dev/cpuset/top-app/cpus 4-5
write /sys/devices/system/cpu/cpufreq/policy4/interactive/target_loads
"65 1008000:70 1200000:75 1416000:80 1608000:90"
临时验证的话,手动修改 target_loads 的方法如下:
1) su
2) echo "65 1008000:70 1200000:75 1416000:80 1608000:90" >
/sys/devices/system/cpu/cpufreq/policy4/interactive/target_loads
方法二:为不同类别的任务分配 CPU 核资源
如上 init.tablet.rc 看到的,可以通过 linux 系统的 cpuset 子系统为不同任务分配
RK3399 的大小核资源(0 到 3 为小核, 4 到 5 为大核):
以 rk3399 行业 sdk 为例:
在 device/rockchip/rk3399/init.tablet.rc 中:
on boot
# update cpusets feature nodes for rk3399 tablet
write /dev/cpuset/foreground/cpus 0-5
write /dev/cpuset/foreground/boost/cpus 0-5
write /dev/cpuset/background/cpus 0
write /dev/cpuset/system-background/cpus 0-3
write /dev/cpuset/top-app/cpus 0-5
write /sys/devices/system/cpu/cpufreq/policy4/interactive/target_loads 65
|