From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Vivier Subject: Re: [PATCH 2/2][KVM] modify account_system_time() to add cputime to cpustat->guest Date: Fri, 10 Aug 2007 18:06:03 +0200 Message-ID: <46BC8CEB.3020400@bull.net> References: <46BC8B59.3060908@bull.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080200030005040507010703" Cc: linux-kernel To: kvm-devel Return-path: In-Reply-To: <46BC8B59.3060908-6ktuUTfB/bM@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org This is a multi-part message in MIME format. --------------080200030005040507010703 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1 You can find attached to this email the patch to apply to procps-3.2.7[1]= to allow "top(1)" to display the cpu guest time. Laurent [1] http://procps.sf.net/procps-3.2.7.tar.gz --=20 ------------- Laurent.Vivier-6ktuUTfB/bM@public.gmane.org -------------- "Software is hard" - Donald Knuth --------------080200030005040507010703 Content-Type: text/plain; name="procps-proc_stat_guest" Content-Disposition: inline; filename="procps-proc_stat_guest" Content-Transfer-Encoding: quoted-printable Index: procps-3.2.7/top.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- procps-3.2.7.orig/top.c 2007-08-08 16:13:17.000000000 +0200 +++ procps-3.2.7/top.c 2007-08-10 16:46:01.000000000 +0200 @@ -935,7 +935,8 @@ cpus[Cpu_tot].x =3D 0; // FIXME: can't tell by kernel version number cpus[Cpu_tot].y =3D 0; // FIXME: can't tell by kernel version number cpus[Cpu_tot].z =3D 0; // FIXME: can't tell by kernel version number - num =3D sscanf(buf, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", + cpus[Cpu_tot].g =3D 0; // FIXME: can't tell by kernel version number + num =3D sscanf(buf, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &cpus[Cpu_tot].u, &cpus[Cpu_tot].n, &cpus[Cpu_tot].s, @@ -943,7 +944,8 @@ &cpus[Cpu_tot].w, &cpus[Cpu_tot].x, &cpus[Cpu_tot].y, - &cpus[Cpu_tot].z + &cpus[Cpu_tot].z, + &cpus[Cpu_tot].g ); if (num < 4) std_err("failed /proc/stat read"); @@ -960,9 +962,10 @@ cpus[i].x =3D 0; // FIXME: can't tell by kernel version number cpus[i].y =3D 0; // FIXME: can't tell by kernel version number cpus[i].z =3D 0; // FIXME: can't tell by kernel version number - num =3D sscanf(buf, "cpu%u %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", + cpus[i].g =3D 0; // FIXME: can't tell by kernel version number + num =3D sscanf(buf, "cpu%u %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &cpus[i].id, - &cpus[i].u, &cpus[i].n, &cpus[i].s, &cpus[i].i, &cpus[i].w, &cp= us[i].x, &cpus[i].y, &cpus[i].z + &cpus[i].u, &cpus[i].n, &cpus[i].s, &cpus[i].i, &cpus[i].w, &cp= us[i].x, &cpus[i].y, &cpus[i].z, &cpus[i].g ); if (num < 4) std_err("failed /proc/stat read"); @@ -2879,10 +2882,11 @@ // we'll trim to zero if we get negative time ticks, // which has happened with some SMP kernels (pre-2.4?) #define TRIMz(x) ((tz =3D (SIC_t)(x)) < 0 ? 0 : tz) - SIC_t u_frme, s_frme, n_frme, i_frme, w_frme, x_frme, y_frme, z_frme,= tot_frme, tz; + SIC_t u_frme, s_frme, n_frme, i_frme, w_frme, x_frme, y_frme, z_frme,= g_frme, tot_frme, tz, u_tmp; float scale; =20 - u_frme =3D cpu->u - cpu->u_sav; + u_tmp =3D cpu->u - cpu->g; + u_frme =3D TRIMz(u_tmp - cpu->u_sav); s_frme =3D cpu->s - cpu->s_sav; n_frme =3D cpu->n - cpu->n_sav; i_frme =3D TRIMz(cpu->i - cpu->i_sav); @@ -2890,7 +2894,8 @@ x_frme =3D cpu->x - cpu->x_sav; y_frme =3D cpu->y - cpu->y_sav; z_frme =3D cpu->z - cpu->z_sav; - tot_frme =3D u_frme + s_frme + n_frme + i_frme + w_frme + x_frme + y_= frme + z_frme; + g_frme =3D cpu->g - cpu->g_sav; + tot_frme =3D u_frme + s_frme + n_frme + i_frme + w_frme + x_frme + y_= frme + z_frme + g_frme; if (tot_frme < 1) tot_frme =3D 1; scale =3D 100.0 / (float)tot_frme; =20 @@ -2908,13 +2913,14 @@ (float)w_frme * scale, (float)x_frme * scale, (float)y_frme * scale, - (float)z_frme * scale + (float)z_frme * scale, + (float)g_frme * scale ) ); Msg_row +=3D 1; =20 // remember for next time around - cpu->u_sav =3D cpu->u; + cpu->u_sav =3D u_tmp; cpu->s_sav =3D cpu->s; cpu->n_sav =3D cpu->n; cpu->i_sav =3D cpu->i; @@ -2922,6 +2928,7 @@ cpu->x_sav =3D cpu->x; cpu->y_sav =3D cpu->y; cpu->z_sav =3D cpu->z; + cpu->g_sav =3D cpu->g; =20 #undef TRIMz } Index: procps-3.2.7/top.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- procps-3.2.7.orig/top.h 2007-08-08 16:14:47.000000000 +0200 +++ procps-3.2.7/top.h 2007-08-08 17:01:45.000000000 +0200 @@ -211,8 +211,8 @@ // calculations. It exists primarily for SMP support but serves // all environments. typedef struct CPU_t { - TIC_t u, n, s, i, w, x, y, z; // as represented in /proc/stat - TIC_t u_sav, s_sav, n_sav, i_sav, w_sav, x_sav, y_sav, z_sav; // in t= he order of our display + TIC_t u, n, s, i, w, x, y, z, g; // as represented in /proc/stat + TIC_t u_sav, s_sav, n_sav, i_sav, w_sav, x_sav, y_sav, z_sav, g_sav; = // in the order of our display unsigned id; // the CPU ID number } CPU_t; =20 @@ -390,7 +390,7 @@ #define STATES_line2x6 "%s\03" \ " %#4.1f%% \02us,\03 %#4.1f%% \02sy,\03 %#4.1f%% \02ni,\03 %#4.1f%% \= 02id,\03 %#4.1f%% \02wa,\03 %#4.1f%% \02hi,\03 %#4.1f%% \02si\03\n" #define STATES_line2x7 "%s\03" \ - "%#5.1f%%\02us,\03%#5.1f%%\02sy,\03%#5.1f%%\02ni,\03%#5.1f%%\02id,\03= %#5.1f%%\02wa,\03%#5.1f%%\02hi,\03%#5.1f%%\02si,\03%#5.1f%%\02st\03\n" + "%#4.1f%%\02us,\03%#4.1f%%\02sy,\03%#4.1f%%\02ni,\03%#5.1f%%\02id,\03%= #4.1f%%\02wa,\03%#4.1f%%\02hi,\03%#4.1f%%\02si,\03%#4.1f%%\02st\03,\02%#4= .1f%%\02g\n" #ifdef CASEUP_SUMMK #define MEMORY_line1 "Mem: \03" \ " %8luK \02total,\03 %8luK \02used,\03 %8luK \02free,\03 %8luK \02buf= fers\03\n" --------------080200030005040507010703 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ --------------080200030005040507010703 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/kvm-devel --------------080200030005040507010703--