linux/arch/ia64
Chen, Kenneth W ce9eed5a98 [IA64] optimize flush_tlb_range on large numa box
It was reported from a field customer that global spin lock ptcg_lock
is giving a lot of grief on munmap performance running on a large numa
machine.  What appears to be a problem coming from flush_tlb_range(),
which currently unconditionally calls platform_global_tlb_purge().
For some of the numa machines in existence today, this function is
mapped into ia64_global_tlb_purge(), which holds ptcg_lock spin lock
while executing ptc.ga instruction.

Here is a patch that attempt to avoid global tlb purge whenever
possible.  It will use local tlb purge as much as possible. Though the
conditions to use local tlb purge is pretty restrictive.  One of the
side effect of having flush tlb range instruction on ia64 is that
kernel don't get a chance to clear out cpu_vm_mask.  On ia64, this mask
is sticky and it will accumulate if process bounces around.  Thus
diminishing the possible use of ptc.l.  Thoughts?

Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Acked-by: Jack Steiner <steiner@sgi.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2006-03-27 10:20:03 -08:00
..
configs [IA64] Increase max node count on SN platforms 2006-03-24 13:15:03 -08:00
dig [IA64] cleanup dig_irq_init 2006-03-24 13:12:46 -08:00
hp [PATCH] kill _INLINE_ 2006-03-23 07:38:16 -08:00
ia32 [PATCH] bitops: ia64: make partial_page.bitmap an unsigned long 2006-03-26 08:57:15 -08:00
kernel [PATCH] bitops: ia64: use cpu_set() instead of __set_bit() 2006-03-26 08:57:09 -08:00
lib [PATCH] bitops: ia64: use generic bitops 2006-03-26 08:57:12 -08:00
mm [IA64] optimize flush_tlb_range on large numa box 2006-03-27 10:20:03 -08:00
oprofile [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
pci [IA64] Fix pcibios_setup 2006-02-27 15:37:41 -08:00
scripts
sn [PATCH] EFI: keep physical table addresses in efi structure 2006-03-26 08:56:54 -08:00
defconfig [IA64] Increase max node count on SN platforms 2006-03-24 13:15:03 -08:00
install.sh
Kconfig [PATCH] bitops: ia64: use generic bitops 2006-03-26 08:57:12 -08:00
Kconfig.debug [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
Makefile kbuild: change kbuild to not rely on incorrect GNU make behavior 2006-03-06 00:09:51 +01:00
module.lds