Hi Dietmar,
On Thu, Aug 20, 2015 at 11:02:17PM -0700, Dietmar Eggemann wrote:
On 08/20/2015 07:14 PM, Leo Yan wrote:
Hi Amit,
Thanks for review and please see below comments.
On Thu, Aug 20, 2015 at 10:27:39AM -0700, Amit Kucheria wrote:
Hi Leo,
Interesting analysis. You didn't explain what EAS (ndm) and EAS (sched) stand for. :)
I refer these conventions from Morten's patch series, they stand for: noEAS (ndm) = Applied EAS patches but disabled EAS feature, with cpufreq ondemand governor with 20ms sampling rate; EAS (ndm) = Enabled EAS, cpufreq ondemand governor with 20ms sampling rate; EAS (sched) = Enabled EAS, scheduler driven DVFS
Also, can you confirm that for clock topology that each cluster of 4 cpus can be scaled (DVFS) independently?
No, Hi6220 is special case, two clusters have coupled their clock source, so all CPUs's frequency will be changed at the same time.
Thanks, Leo Yan
On Thu, Aug 13, 2015 at 10:26 AM, Leo Yan leo.yan@linaro.org wrote:
Hi all,
Below are my trying for profiling EAS; please help review and welcome any suggestion or question.
Thanks for the test data!
[...]
Hardware Environment
- Platform: 96boards Hikey
- SoC: Hi6220, 2 clusters, 4xCA53 CPUs in each cluster
- CPU clock: 2 clusters with 8 CPUs have coupled clock source and support 208mHz/432mHz/729mHz/960mHz/1200mHz
- Support CPU and cluster level low power mode
Software Environment
- Kernel: 4.2rc4 + EAS RFCv5
Could you share the platform adaptation code [especially arch/arm64/kernel/topology.c]. I'm interested in the Energy Model you're using and where you put the SD_SHARE_CAP_STATES sd flag :-)
Thanks for reminding, directly used the same energy model with Juno which Juri shared with me. I recognized need change code like below so that can best match for my case; will do second round profiling and update with you.
static inline int cpu_corepower_flags(void) { return SD_SHARE_PKG_RESOURCES | SD_SHARE_POWERDOMAIN | \ SD_SHARE_CAP_STATES; }
static inline int cpu_cluster_flags(void) { return SD_SHARE_CAP_STATES; }
static struct sched_domain_topology_level arm64_topology[] = { #ifdef CONFIG_SCHED_MC { cpu_coregroup_mask, cpu_corepower_flags, cpu_core_energy, SD_INIT_NAME(MC) }, #endif { cpu_cpu_mask, cpu_cluster_flags, cpu_cluster_energy, SD_INIT_NAME(DIE) }, { NULL, }, };
Thanks, Leo Yan