android_kernel_xiaomi_sdm845/include
Jack Steiner db1b1fefc2 [PATCH] sched: reduce overhead of calc_load
Currently, count_active_tasks() calls both nr_running() &
nr_interruptible().  Each of these functions does a "for_each_cpu" & reads
values from the runqueue of each cpu.  Although this is not a lot of
instructions, each runqueue may be located on different node.  Depending on
the architecture, a unique TLB entry may be required to access each
runqueue.

Since there may be more runqueues than cpu TLB entries, a scan of all
runqueues can trash the TLB.  Each memory reference incurs a TLB miss &
refill.

In addition, the runqueue cacheline that contains nr_running &
nr_uninterruptible may be evicted from the cache between the two passes.
This causes unnecessary cache misses.

Combining nr_running() & nr_interruptible() into a single function
substantially reduces the TLB & cache misses on large systems.  This should
have no measureable effect on smaller systems.

On a 128p IA64 system running a memory stress workload, the new function
reduced the overhead of calc_load() from 605 usec/call to 324 usec/call.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-31 12:18:58 -08:00
..
acpi [PATCH] s/;;/;/g 2006-03-24 07:33:24 -08:00
asm-alpha [PATCH] alpha: make poll flags the same as other architectures 2006-03-28 09:16:02 -08:00
asm-arm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-03-28 13:53:03 -08:00
asm-arm26 [PATCH] unify pfn_to_page: arm26 pfn_to_page 2006-03-27 08:44:44 -08:00
asm-cris [PATCH] unify pfn_to_page: cris pfn_to_page 2006-03-27 08:44:45 -08:00
asm-frv [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
asm-generic [PATCH] make local_t signed 2006-03-31 12:18:55 -08:00
asm-h8300 [PATCH] unify pfn_to_page: h8300 pfn_to_page 2006-03-27 08:44:45 -08:00
asm-i386 [PATCH] make local_t signed 2006-03-31 12:18:55 -08:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-03-30 12:38:18 -08:00
asm-m32r [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
asm-m68k [PATCH] m68k: fix undefined reference to generic_find_next_zero_le_bit 2006-03-26 08:57:13 -08:00
asm-m68knommu [PATCH] bitops: m68knommu: use generic bitops 2006-03-26 08:57:13 -08:00
asm-mips Merge master.kernel.org:/home/rmk/linux-2.6-serial 2006-03-28 13:52:37 -08:00
asm-parisc [PARISC] Add atomic_sub_and_test 2006-03-30 17:48:59 +00:00
asm-powerpc [PATCH] Introduce sys_splice() system call 2006-03-30 12:28:18 -08:00
asm-ppc [PATCH] lock PTE before updating it in 440/BookE page fault handler 2006-03-29 13:44:15 +11:00
asm-s390 [PATCH] for_each_possible_cpu: s390 2006-03-31 12:18:52 -08:00
asm-sh [PATCH] Typo fixes 2006-03-28 09:16:08 -08:00
asm-sh64 [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
asm-sparc [PATCH] unify pfn_to_page: sparc pfn_to_page 2006-03-27 08:44:46 -08:00
asm-sparc64 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-03-28 09:25:22 -08:00
asm-um [PATCH] uml: check for differences in host support 2006-03-31 12:18:52 -08:00
asm-v850 [PATCH] unify pfn_to_page: v850 pfn_to_page 2006-03-27 08:44:47 -08:00
asm-x86_64 [PATCH] make local_t signed 2006-03-31 12:18:55 -08:00
asm-xtensa [PATCH] unify pfn_to_page: xtensa pfn_to_page 2006-03-27 08:44:47 -08:00
keys [PATCH] Keys: Remove key duplication 2006-01-06 08:33:29 -08:00
linux [PATCH] sched: reduce overhead of calc_load 2006-03-31 12:18:58 -08:00
math-emu
media V4L/DVB (3599): Implement new routing commands for wm8775 and cs53l32a. 2006-03-24 16:27:00 -03:00
mtd [MTD] user-abi: Clean up trailing white spaces 2005-11-07 14:43:11 +01:00
net [INET]: Introduce tunnel4/tunnel6 2006-03-28 17:02:46 -08:00
pcmcia [PATCH] pcmcia: Add macro to match PCMCIA cards by numeric ID and first vendor string 2006-03-01 11:11:26 +01:00
rdma IB/mad: RMPP support for additional classes 2006-03-30 07:19:51 -08:00
rxrpc
scsi [PATCH] Make libata not powerdown drivers on PM_EVENT_FREEZE. 2006-03-24 09:51:36 -05:00
sound [PATCH] mark f_ops const in the inode 2006-03-28 09:16:05 -08:00
video [PATCH] Remove MODULE_PARM 2006-03-25 08:22:52 -08:00