lkml.org 
[lkml]   [2006]   [Mar]   [30]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateWed, 29 Mar 2006 21:04:15 -0800
FromAndrew Morton <>
SubjectRe: [Patch 6/8] virtual cpu run time
Shailabh Nagar <nagar@watson.ibm.com> wrote:
>
> delayacct-virtcpu.patch
> 
> Distinguish between "wall-clock" and "virtual" cpu run times and return
> both, at per-task and per-tgid granularity.
> 
> Some architectures adjust tsk->utime+tsk->stime to reflect the time that
> the kernel wasn't scheduled in hypervised environments and this is the
> "wall-clock" cpu run time. "Virtual" cpu run time, on the other hand, does
> not account for the kernel being descheduled.
> 
> This patch allows the most accurate "virtual" cpu run time, collected by
> the schedstats code (now shared with delay accounting code), to be returned
> to user space, in addition to the "wall-clock" cpu time that was being exported
> earlier. Both these times are useful for workload management in different
> situations.
> 
> In a non-virtualized environment, or on architectures which do not adjust
> tsk->utime/stime, these will effectively be the same value but at different
> granularities.
> 
> ...
> 
> Index: linux-2.6.16/include/linux/taskstats.h
> ===================================================================
> --- linux-2.6.16.orig/include/linux/taskstats.h	2006-03-29 18:13:18.000000000 -0500
> +++ linux-2.6.16/include/linux/taskstats.h	2006-03-29 18:13:20.000000000 -0500
> @@ -46,8 +46,14 @@ struct taskstats {
>  	__u64	swapin_count;
>  	__u64	swapin_delay_total;	/* swapin page fault wait*/
> 
> -	__u64	cpu_run_total;		/* cpu running time
> -					 * no count available/provided */
> +	__u64	cpu_run_real_total;	/* cpu "wall-clock" running time
> +					 * Potentially accounts for cpu
> +					 * virtualization, on some arches
> +					 */
> +	__u64	cpu_run_virtual_total;	/* cpu "virtual" running time
> +					 * Uses time intervals as seen by
> +					 * the kernel
> +					 */
>  };
> 

Again, the reader of this struct wants to know what the atomicity rules are.

> +	d->cpu_run_real_total = (tmp < (nsec_t)d->cpu_run_real_total)? 0: tmp;

	lval = expr1 ? expr2 : expr3;

> +	tmp = (nsec_t)d->cpu_run_virtual_total
> +		+ (nsec_t)jiffies_to_usecs(t3) * 1000;

umm, Linux doesn't have nsec_t any more.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-03-30 07:08    [from the cache]
©2003-2008