在 Android 系统中,core control 的目录通常位于:
/sys/module/core_ctl/parameters/
该目录包含一系列文件,用于控制和调节 Android 的 core_ctl 模块的行为。core_ctl 是专门为多核处理器设计的一种动态核心管理机制,尤其在 big.LITTLE 架构下,用于平衡性能和功耗。
以下是该目录下常见文件及其作用的详细说明:
1. min_cpus
- 作用:指定系统中始终保持在线(online)的最小 CPU 核心数。
- 影响:
- 确保至少有指定数量的 CPU 核心始终在线,即使系统负载较低。
- 增加此值会提高性能,但也会增加功耗。
- 使用示例:
echo 4 > /sys/module/core_ctl/parameters/min_cpus
2. max_cpus
- 作用:限制系统中允许在线的最大 CPU 核心数。
- 影响:
- 即使负载较高,也不会超过此值上线更多核心。
- 减小此值可能有助于节能,但可能影响高负载任务的性能。
- 使用示例:
echo 8 > /sys/module/core_ctl/parameters/max_cpus
3. busy_up_thres
- 作用:决定上线更多核心的负载阈值(以百分比表示)。当核心的平均负载高于此值时,
core_ctl
会尝试上线更多核心。 - 影响:
- 值越低,核心上线越敏感;值越高,系统会更倾向于保持核心离线状态。
- 使用示例:
echo 70 > /sys/module/core_ctl/parameters/busy_up_thres
4. busy_down_thres
- 作用:决定下线核心的负载阈值(以百分比表示)。当核心的平均负载低于此值时,
core_ctl
会尝试下线多余核心。 - 影响:
- 值越低,核心更容易被下线;值越高,核心倾向于保持在线。
- 使用示例:
echo 30 > /sys/module/core_ctl/parameters/busy_down_thres
5. offline_delay_ms
- 作用:设置核心在满足下线条件后延迟下线的时间(以毫秒为单位)。
- 影响:
- 延迟值较大时,可以避免短时间内频繁上线/下线核心,减少核心切换带来的性能波动和功耗损耗。
- 使用示例:
echo 1000 > /sys/module/core_ctl/parameters/offline_delay_ms
6. task_thres
- 作用:设置触发核心上线所需的最低任务数阈值。当运行任务数超过此值时,
core_ctl
会尝试上线更多核心。 - 影响:
- 值较低时,
core_ctl
会更快响应任务增加;值较高时,系统更保守地上线核心。
- 值较低时,
- 使用示例:
echo 4 > /sys/module/core_ctl/parameters/task_thres
7. nr_running_avg
- 作用:用于决定是否上线/下线核心的运行任务数平均值。此值由系统动态计算和更新,用户一般只用于查看状态。
- 使用示例:
cat /sys/module/core_ctl/parameters/nr_running_avg
8. is_big_cluster
- 作用:标记是否为 big.LITTLE 架构中的 big cluster。
- 影响:
- 如果是 big cluster,
core_ctl
会对其采用更激进的策略以提升性能。
- 如果是 big cluster,
- 使用示例:
cat /sys/module/core_ctl/parameters/is_big_cluster
9. enable
- 作用:启用或禁用
core_ctl
模块。 - 影响:
- 如果设置为
0
,core_ctl
不再管理 CPU 核心的在线状态,核心行为完全由调度器决定。
- 如果设置为
- 使用示例:
echo 1 > /sys/module/core_ctl/parameters/enable
10. cpu_up_rate
和 cpu_down_rate
- 作用:
cpu_up_rate
:指定核心上线的速度(每秒最大上线核心数)。cpu_down_rate
:指定核心下线的速度(每秒最大下线核心数)。
- 使用示例:
echo 2 > /sys/module/core_ctl/parameters/cpu_up_rate echo 1 > /sys/module/core_ctl/parameters/cpu_down_rate
总结
/sys/module/core_ctl/parameters/
目录下的各参数文件,主要是为了提供一个灵活的接口来调节核心的动态管理策略。通过合理配置,可以实现性能和功耗之间的平衡。
在实际使用中:
- 性能优先:适当增大
min_cpus
和降低busy_up_thres
。 - 功耗优先:限制
max_cpus
,提高busy_up_thres
,并增加offline_delay_ms
。
根据具体场景调整这些参数,可以充分发挥硬件性能的潜力,同时优化用户体验。