linux/arch
Martin Schwidefsky 61cc37906b s390/vtime: correct scaled cputime for SMT
The scaled cputime is supposed to be derived from the normal per-thread
cputime by dividing it with the average thread density in the last interval.

The calculation of the scaling values for the average thread density is
incorrect. The current, incorrect calculation:

    Ci = cycle count with i active threads
    T = unscaled cputime, sT = scaled cputime
    sT = T * (C1 + C2 + ... + Cn) / (1*C1 + 2*C2 + ... + n*Cn)

The calculation happens to yield the correct numbers for the simple cases
with only one Ci value not zero. But for cases with multiple Ci values not
zero it fails. E.g. on a SMT-2 system with one thread active half the time
and two threads active for the other half of the time it fails, the scaling
factor should be 3/4 but the formula gives 2/3.

The correct formula is

    sT = T * (C1/1 + C2/2 + ... + Cn/n) / (C1 + C2 + ... + Cn)

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2015-09-17 13:43:43 +02:00
..
alpha dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
arc ARCv2: [axs103_smp] Reduce clk for SMP FPGA configs 2015-09-11 19:34:01 -07:00
arm Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-14 12:24:10 -07:00
arm64 Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
avr32 Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
blackfin Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
c6x Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:33:35 -07:00
cris CRISv10: delete unused lib/dmacopy.c 2015-09-05 00:56:51 +02:00
frv Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
h8300 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
hexagon Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
ia64 ia64: Enable userfaultfd and membarrier system calls 2015-09-15 16:22:45 -07:00
m32r lib/decompressors: use real out buf size for gunzip with kernel 2015-09-10 13:29:01 -07:00
m68k kexec: split kexec_load syscall from kexec core code 2015-09-10 13:29:01 -07:00
metag Metag architecture changes for v4.3 2015-09-09 10:27:59 -07:00
microblaze Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
mips dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
mn10300 Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
nios2 nios2: add Max10 defconfig 2015-09-08 18:16:02 +08:00
openrisc dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
parisc parisc: Use platform_device_register_simple("rtc-generic") 2015-09-08 17:53:48 +02:00
powerpc Merge branch 'akpm' (patches from Andrew) 2015-09-10 18:19:42 -07:00
s390 s390/vtime: correct scaled cputime for SMT 2015-09-17 13:43:43 +02:00
score Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:04:50 -07:00
sh dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
sparc dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
tile dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
um Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:04:50 -07:00
unicore32 dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
x86 sys_membarrier(): system-wide memory barrier (generic, x86) 2015-09-11 15:21:34 -07:00
xtensa dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
.gitignore
Kconfig kexec: split kexec_load syscall from kexec core code 2015-09-10 13:29:01 -07:00