linux/arch/powerpc/platforms
Paul Mackerras cf9efce0ce powerpc: Account time using timebase rather than PURR
Currently, when CONFIG_VIRT_CPU_ACCOUNTING is enabled, we use the
PURR register for measuring the user and system time used by
processes, as well as other related times such as hardirq and
softirq times.  This turns out to be quite confusing for users
because it means that a program will often be measured as taking
less time when run on a multi-threaded processor (SMT2 or SMT4 mode)
than it does when run on a single-threaded processor (ST mode), even
though the program takes longer to finish.  The discrepancy is
accounted for as stolen time, which is also confusing, particularly
when there are no other partitions running.

This changes the accounting to use the timebase instead, meaning that
the reported user and system times are the actual number of real-time
seconds that the program was executing on the processor thread,
regardless of which SMT mode the processor is in.  Thus a program will
generally show greater user and system times when run on a
multi-threaded processor than on a single-threaded processor.

On pSeries systems on POWER5 or later processors, we measure the
stolen time (time when this partition wasn't running) using the
hypervisor dispatch trace log.  We check for new entries in the
log on every entry from user mode and on every transition from
kernel process context to soft or hard IRQ context (i.e. when
account_system_vtime() gets called).  So that we can correctly
distinguish time stolen from user time and time stolen from system
time, without having to check the log on every exit to user mode,
we store separate timestamps for exit to user mode and entry from
user mode.

On systems that have a SPURR (POWER6 and POWER7), we read the SPURR
in account_system_vtime() (as before), and then apportion the SPURR
ticks since the last time we read it between scaled user time and
scaled system time according to the relative proportions of user
time and system time over the same interval.  This avoids having to
read the SPURR on every kernel entry and exit.  On systems that have
PURR but not SPURR (i.e., POWER5), we do the same using the PURR
rather than the SPURR.

This disables the DTL user interface in /sys/debug/kernel/powerpc/dtl
for now since it conflicts with the use of the dispatch trace log
by the time accounting code.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2010-09-02 14:07:31 +10:00
..
8xx powerpc/8xx: Add support for the MPC8xx based boards from TQC 2010-08-04 14:25:22 -05:00
40x Remove REDWOOD_[456] config options and conditional code 2010-07-26 09:06:04 -04:00
44x powerpc/44x: Add basic ICON PPC440SPe board support 2010-05-12 07:50:53 -04:00
52xx powerpc/5200: add mpc5200_psc_ac97_gpio_reset 2010-08-06 20:49:18 -06:00
82xx powerpc: remove references to of_device and to_of_device 2010-07-24 09:58:21 -06:00
83xx arch/powerpc/platforms/83xx/mpc837x_mds.c: Add missing iounmap 2010-08-31 16:38:47 -05:00
85xx powerpc/85xx: Fix compile issue with p1022_ds due to lmb rename to memblock 2010-08-31 11:41:01 -05:00
86xx Merge commit 'v2.6.35-rc6' into devicetree/next 2010-07-24 09:49:13 -06:00
512x Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-05 15:57:35 -07:00
amigaone of/address: Clean up function declarations 2010-08-01 01:42:42 -06:00
cell powerpc: Fix bogus it_blocksize in VIO iommu code 2010-08-24 15:26:31 +10:00
chrp include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
embedded6xx lmb: rename to memblock 2010-07-14 17:14:00 +10:00
iseries powerpc: Abstract indexing of lppaca structs 2010-09-02 14:07:31 +10:00
maple lmb: rename to memblock 2010-07-14 17:14:00 +10:00
pasemi powerpc: remove references to of_device and to_of_device 2010-07-24 09:58:21 -06:00
powermac powerpc/powermac: Drop unnecessary null test 2010-08-24 15:26:28 +10:00
prep powerpc/kconfig: Kill PPC_MULTIPLATFORM 2009-03-11 17:11:35 +11:00
ps3 Merge branch 'master' into for-next 2010-08-04 15:14:38 +02:00
pseries powerpc: Account time using timebase rather than PURR 2010-09-02 14:07:31 +10:00
fsl_uli1575.c PCI: add pci_bus_for_each_resource(), remove direct bus->resource[] refs 2010-02-23 09:43:31 -08:00
Kconfig powerpc: Fix config dependency problem with MPIC_U3_HT_IRQS 2010-08-24 15:28:29 +10:00
Kconfig.cputype powerpc/47x: Base ppc476 support 2010-05-05 09:11:10 -04:00
Makefile powerpc/85xx: Kconfig cleanup 2009-11-20 16:45:27 -06:00