在kernel中实现了两个driver,一个负责控制开关CPU的核数,叫做hot-plug驱动,另一个负责调整CPU的频率,叫做DVFS驱动。kernel中的driver会根据系统的负载,自动调整使用几个CPU和调整CPU频率。如果负载高了,提高频率,或者多开几个核,或者开大核。如果负载降下去了,就可以关大核,关核,降频。
以下是两个知名手机厂商开源的config配置文档:
60 CONFIG_CPU_FREQ=y | 446 CONFIG_CPU_FREQ=y
61 CONFIG_CPU_FREQ_STAT_DETAILS=y | 447 CONFIG_CPU_FREQ_STAT=y
62 CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y | 448 CONFIG_CPU_FREQ_STAT_DETAILS=y
63 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 449 # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
64 CONFIG_CPU_FREQ_GOV_POWERSAVE=y | 450 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
65 CONFIG_CPU_FREQ_GOV_USERSPACE=y | 451 # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
66 CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
67 CONFIG_NET=y | 453 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
68 CONFIG_PACKET=y | 454 CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y
69 CONFIG_UNIX=y | 455 # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
70 CONFIG_XFRM_MIGRATE=y | 456 # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
71 CONFIG_NET_KEY=y | 457 # CONFIG_CPU_FREQ_GOV_USERSPACE is not set
72 CONFIG_INET=y | 458 # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
73 CONFIG_IP_MULTICAST=y | 459 CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
74 CONFIG_IP_