[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 14/18] xen/cpufreq: introduce GET_CPUFREQ_CPPC sub-cmd
On 04.07.2025 10:13, Penny, Zheng wrote: > [Public] > >> -----Original Message----- >> From: Jan Beulich <jbeulich@xxxxxxxx> >> Sent: Tuesday, June 17, 2025 6:08 PM >> To: Penny, Zheng <penny.zheng@xxxxxxx> >> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Anthony PERARD >> <anthony.perard@xxxxxxxxxx>; Juergen Gross <jgross@xxxxxxxx>; Andrew >> Cooper <andrew.cooper3@xxxxxxxxxx>; Orzel, Michal <Michal.Orzel@xxxxxxx>; >> Julien Grall <julien@xxxxxxx>; Roger Pau Monné <roger.pau@xxxxxxxxxx>; >> Stefano >> Stabellini <sstabellini@xxxxxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx >> Subject: Re: [PATCH v5 14/18] xen/cpufreq: introduce GET_CPUFREQ_CPPC sub- >> cmd >> >> On 27.05.2025 10:48, Penny Zheng wrote: >>> --- a/tools/misc/xenpm.c >>> +++ b/tools/misc/xenpm.c >>> @@ -69,6 +69,7 @@ void show_help(void) >>> " set-max-cstate <num>|'unlimited' >>> [<num2>|'unlimited']\n" >>> " set the C-State >>> limitation (<num> >= 0) and\n" >>> " optionally the >>> C-sub-state limitation >> (<num2> >= 0)\n" >>> + " get-cpufreq-cppc [cpuid] list cpu cppc parameter >>> of CPU >> <cpuid> or all\n" >>> " set-cpufreq-cppc [cpuid] [balance|performance|powersave] >> <param:val>*\n" >>> " set Hardware P-State >>> (HWP) parameters\n" >>> " on CPU <cpuid> or all if >>> omitted.\n" >>> @@ -812,33 +813,7 @@ static void print_cpufreq_para(int cpuid, struct >>> xc_get_cpufreq_para *p_cpufreq) >>> >>> printf("scaling_driver : %s\n", p_cpufreq->scaling_driver); >>> >>> - if ( hwp ) >>> - { >>> - const xc_cppc_para_t *cppc = &p_cpufreq->u.cppc_para; >>> - >>> - printf("cppc variables :\n"); >>> - printf(" hardware limits : lowest [%"PRIu32"] lowest nonlinear >> [%"PRIu32"]\n", >>> - cppc->lowest, cppc->lowest_nonlinear); >>> - printf(" : nominal [%"PRIu32"] highest >>> [%"PRIu32"]\n", >>> - cppc->nominal, cppc->highest); >>> - printf(" configured limits : min [%"PRIu32"] max [%"PRIu32"] >>> energy perf >> [%"PRIu32"]\n", >>> - cppc->minimum, cppc->maximum, cppc->energy_perf); >>> - >>> - if ( cppc->features & XEN_SYSCTL_CPPC_FEAT_ACT_WINDOW ) >>> - { >>> - unsigned int activity_window; >>> - const char *units; >>> - >>> - activity_window = calculate_activity_window(cppc, &units); >>> - printf(" : activity_window [%"PRIu32" >>> %s]\n", >>> - activity_window, units); >>> - } >>> - >>> - printf(" : desired [%"PRIu32"%s]\n", >>> - cppc->desired, >>> - cppc->desired ? "" : " hw autonomous"); >>> - } >>> - else >>> + if ( !hwp ) >>> { >>> if ( p_cpufreq->gov_num ) >>> printf("scaling_avail_gov : %s\n", >> >> I'm not sure it is a good idea to alter what is being output for >> get-cpufreq-para. >> People may simply miss that output then, without having any indication where >> it >> went. > > Hwp is more like amd-cppc in active mode. It also does not rely on Xen > governor to do performance tuning, so in previous design, we could borrow > governor filed to output cppc info > However after introducing amd-cppc passive mode, we have request to output > both governor and CPPC info. And if continuing expanding get-cpufreq-para to > include CPPC info, it will make the parent stuct xen_sysctl.u exceed exceed > 128 bytes. How is the xenpm command "get-cpufreq-para" related to the sysctl interface struct size? If you need to invoke two sysctl sub-ops to produce all relevant "get-cpufreq-para" output, so be it I would say. > So I'm left to create a new subcmd to specifically deal with CPPC info > I could leave above output for get-cpufreq-para unchanged. Then we will have > duplicate CPPC info in two commands. Or is it fine to do that? Duplicate information (in distinct commands) isn't a problem either, imo. Jason, you did the HWP work here - any thoughts? Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |