taskstats scaled time cleanup
This moves the ability to scale cputime into generic code. This allows us to fix the issue in kernel/timer.c (noticed by Balbir) where we could only add an unscaled value to the scaled utime/stime. This adds a cputime_to_scaled function. As before, the POWERPC version does the scaling based on the last SPURR/PURR ratio calculated. The generic and s390 (only other arch to implement asm/cputime.h) versions are both NOPs. Also moves the SPURR and PURR snapshots closer. Signed-off-by: Michael Neuling <mikey@neuling.org> Cc: Jay Lan <jlan@engr.sgi.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
d9afa43532
commit
06b8e878a9
@@ -52,12 +52,26 @@ typedef u64 cputime64_t;
|
||||
* Convert cputime <-> jiffies
|
||||
*/
|
||||
extern u64 __cputime_jiffies_factor;
|
||||
DECLARE_PER_CPU(unsigned long, cputime_last_delta);
|
||||
DECLARE_PER_CPU(unsigned long, cputime_scaled_last_delta);
|
||||
|
||||
static inline unsigned long cputime_to_jiffies(const cputime_t ct)
|
||||
{
|
||||
return mulhdu(ct, __cputime_jiffies_factor);
|
||||
}
|
||||
|
||||
/* Estimate the scaled cputime by scaling the real cputime based on
|
||||
* the last scaled to real ratio */
|
||||
static inline cputime_t cputime_to_scaled(const cputime_t ct)
|
||||
{
|
||||
if (cpu_has_feature(CPU_FTR_SPURR) &&
|
||||
per_cpu(cputime_last_delta, smp_processor_id()))
|
||||
return ct *
|
||||
per_cpu(cputime_scaled_last_delta, smp_processor_id())/
|
||||
per_cpu(cputime_last_delta, smp_processor_id());
|
||||
return ct;
|
||||
}
|
||||
|
||||
static inline cputime_t jiffies_to_cputime(const unsigned long jif)
|
||||
{
|
||||
cputime_t ct;
|
||||
|
||||
Reference in New Issue
Block a user