|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Ping: [PATCH] xenpm: assorted adjustments
Ian - if it's not you to ack this (or otherwise comment on it), who would
be the one?
Thanks, Jan
>>> On 21.12.11 at 09:03, "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
> - use consistent error values (stop mixing of [positive] errno values
> with literal -E... ones)
> - properly format output
> - don't use leading zeros in decimal output
> - move printing of average frequency into P-state conditional (rather
> than a C-state one)
> - don't print some C-state related info when CPU idle management is
> disabled in the hypervisor
> - use calloc() for array allocations that also got cleared via memset()
> so far
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/tools/misc/xenpm.c
> +++ b/tools/misc/xenpm.c
> @@ -87,20 +87,20 @@ static void print_cxstat(int cpuid, stru
> cxstat->idle_time/1000000UL);
> for ( i = 0; i < cxstat->nr; i++ )
> {
> - printf("C%d : transition [%020"PRIu64"]\n",
> + printf("C%-20d: transition [%20"PRIu64"]\n",
> i, cxstat->triggers[i]);
> - printf(" residency [%020"PRIu64" ms]\n",
> + printf(" residency [%20"PRIu64" ms]\n",
> cxstat->residencies[i]/1000000UL);
> }
> - printf("pc2 : [%020"PRIu64" ms]\n"
> - "pc3 : [%020"PRIu64" ms]\n"
> - "pc6 : [%020"PRIu64" ms]\n"
> - "pc7 : [%020"PRIu64" ms]\n",
> + printf("pc2 : [%20"PRIu64" ms]\n"
> + "pc3 : [%20"PRIu64" ms]\n"
> + "pc6 : [%20"PRIu64" ms]\n"
> + "pc7 : [%20"PRIu64" ms]\n",
> cxstat->pc2/1000000UL, cxstat->pc3/1000000UL,
> cxstat->pc6/1000000UL, cxstat->pc7/1000000UL);
> - printf("cc3 : [%020"PRIu64" ms]\n"
> - "cc6 : [%020"PRIu64" ms]\n"
> - "cc7 : [%020"PRIu64" ms]\n",
> + printf("cc3 : [%20"PRIu64" ms]\n"
> + "cc6 : [%20"PRIu64" ms]\n"
> + "cc7 : [%20"PRIu64" ms]\n",
> cxstat->cc3/1000000UL, cxstat->cc6/1000000UL,
> cxstat->cc7/1000000UL);
> printf("\n");
> @@ -114,7 +114,7 @@ static int get_cxstat_by_cpuid(xc_interf
>
> ret = xc_pm_get_max_cx(xc_handle, cpuid, &max_cx_num);
> if ( ret )
> - return errno;
> + return -errno;
>
> if ( !cxstat )
> return -EINVAL;
> @@ -135,15 +135,14 @@ static int get_cxstat_by_cpuid(xc_interf
> ret = xc_pm_get_cxstat(xc_handle, cpuid, cxstat);
> if( ret )
> {
> - int temp = errno;
> + ret = -errno;
> free(cxstat->triggers);
> free(cxstat->residencies);
> cxstat->triggers = NULL;
> cxstat->residencies = NULL;
> - return temp;
> }
>
> - return 0;
> + return ret;
> }
>
> static int show_max_cstate(xc_interface *xc_handle)
> @@ -214,14 +213,13 @@ static void print_pxstat(int cpuid, stru
> for ( i = 0; i < pxstat->total; i++ )
> {
> if ( pxstat->cur == i )
> - printf("*P%d", i);
> + printf("*P%-9d", i);
> else
> - printf("P%d ", i);
> - printf(" : freq [%04"PRIu64" MHz]\n",
> - pxstat->pt[i].freq);
> - printf(" transition [%020"PRIu64"]\n",
> + printf("P%-10d", i);
> + printf("[%4"PRIu64" MHz]", pxstat->pt[i].freq);
> + printf(": transition [%20"PRIu64"]\n",
> pxstat->pt[i].count);
> - printf(" residency [%020"PRIu64" ms]\n",
> + printf(" residency [%20"PRIu64" ms]\n",
> pxstat->pt[i].residency/1000000UL);
> }
> printf("\n");
> @@ -235,7 +233,7 @@ static int get_pxstat_by_cpuid(xc_interf
>
> ret = xc_pm_get_max_px(xc_handle, cpuid, &max_px_num);
> if ( ret )
> - return errno;
> + return -errno;
>
> if ( !pxstat)
> return -EINVAL;
> @@ -254,15 +252,14 @@ static int get_pxstat_by_cpuid(xc_interf
> ret = xc_pm_get_pxstat(xc_handle, cpuid, pxstat);
> if( ret )
> {
> - int temp = errno;
> + ret = -errno;
> free(pxstat->trans_pt);
> free(pxstat->pt);
> pxstat->trans_pt = NULL;
> pxstat->pt = NULL;
> - return temp;
> }
>
> - return 0;
> + return ret;
> }
>
> /* show cpu actual average freq information on CPU cpuid */
> @@ -272,11 +269,9 @@ static int get_avgfreq_by_cpuid(xc_inter
>
> ret = xc_get_cpufreq_avgfreq(xc_handle, cpuid, avgfreq);
> if ( ret )
> - {
> - return errno;
> - }
> + ret = -errno;
>
> - return 0;
> + return ret;
> }
>
> static int show_pxstat_by_cpuid(xc_interface *xc_handle, int cpuid)
> @@ -325,7 +320,7 @@ static uint64_t *sum, *sum_cx, *sum_px;
>
> static void signal_int_handler(int signo)
> {
> - int i, j, k, ret;
> + int i, j, k;
> struct timeval tv;
> int cx_cap = 0, px_cap = 0;
> DECLARE_HYPERCALL_BUFFER(uint32_t, cpu_to_core);
> @@ -404,6 +399,8 @@ static void signal_int_handler(int signo
> res / 1000000UL, 100UL * res / (double)sum_px[i]);
> }
> }
> + if ( px_cap && avgfreq[i] )
> + printf(" Avg freq\t%d\tKHz\n", avgfreq[i]);
> }
>
> set_xen_guest_handle(info.cpu_to_core, cpu_to_core);
> @@ -411,8 +408,7 @@ static void signal_int_handler(int signo
> set_xen_guest_handle(info.cpu_to_node, cpu_to_node);
> info.max_cpu_index = MAX_NR_CPU - 1;
>
> - ret = xc_topologyinfo(xc_handle, &info);
> - if ( !ret )
> + if ( cx_cap && !xc_topologyinfo(xc_handle, &info) )
> {
> uint32_t socket_ids[MAX_NR_CPU];
> uint32_t core_ids[MAX_NR_CPU];
> @@ -461,7 +457,7 @@ static void signal_int_handler(int signo
> if ( cpu_to_socket[j] == socket_ids[i] )
> break;
> }
> - printf("Socket %d\n", socket_ids[i]);
> + printf("\nSocket %d\n", socket_ids[i]);
> res = cxstat_end[j].pc2 - cxstat_start[j].pc2;
> printf("\tPC2\t%"PRIu64" ms\t%.2f%%\n", res / 1000000UL,
> 100UL * res / (double)sum_cx[j]);
> @@ -492,12 +488,9 @@ static void signal_int_handler(int signo
> res = cxstat_end[j].cc7 - cxstat_start[j].cc7;
> printf("\t\tCC7\t%"PRIu64" ms\t%.2f%%\n", res /
> 1000000UL,
> 100UL * res / (double)sum_cx[j]);
> - printf("\n");
> -
> }
> }
> }
> - printf(" Avg freq\t%d\tKHz\n", avgfreq[i]);
> }
>
> /* some clean up and then exits */
> @@ -542,23 +535,23 @@ void start_gather_func(int argc, char *a
> }
> usec_start = tv.tv_sec * 1000000UL + tv.tv_usec;
>
> - sum = malloc(sizeof(uint64_t) * 2 * max_cpu_nr);
> + sum = calloc(2 * max_cpu_nr, sizeof(*sum));
> if ( sum == NULL )
> return ;
> - cxstat = malloc(sizeof(struct xc_cx_stat) * 2 * max_cpu_nr);
> + cxstat = calloc(2 * max_cpu_nr, sizeof(*cxstat));
> if ( cxstat == NULL )
> {
> free(sum);
> return ;
> }
> - pxstat = malloc(sizeof(struct xc_px_stat) * 2 * max_cpu_nr);
> + pxstat = calloc(2 * max_cpu_nr, sizeof(*pxstat));
> if ( pxstat == NULL )
> {
> free(sum);
> free(cxstat);
> return ;
> }
> - avgfreq = malloc(sizeof(int) * max_cpu_nr);
> + avgfreq = calloc(max_cpu_nr, sizeof(*avgfreq));
> if ( avgfreq == NULL )
> {
> free(sum);
> @@ -566,10 +559,6 @@ void start_gather_func(int argc, char *a
> free(pxstat);
> return ;
> }
> - memset(sum, 0, sizeof(uint64_t) * 2 * max_cpu_nr);
> - memset(cxstat, 0, sizeof(struct xc_cx_stat) * 2 * max_cpu_nr);
> - memset(pxstat, 0, sizeof(struct xc_px_stat) * 2 * max_cpu_nr);
> - memset(avgfreq, 0, sizeof(int) * max_cpu_nr);
> sum_cx = sum;
> sum_px = sum + max_cpu_nr;
> cxstat_start = cxstat;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |