linux/Documentation
Eric Dumazet 4b9d9be839 inetpeer: remove unused list
Andi Kleen and Tim Chen reported huge contention on inetpeer
unused_peers.lock, on memcached workload on a 40 core machine, with
disabled route cache.

It appears we constantly flip peers refcnt between 0 and 1 values, and
we must insert/remove peers from unused_peers.list, holding a contended
spinlock.

Remove this list completely and perform a garbage collection on-the-fly,
at lookup time, using the expired nodes we met during the tree
traversal.

This removes a lot of code, makes locking more standard, and obsoletes
two sysctls (inet_peer_gc_mintime and inet_peer_gc_maxtime). This also
removes two pointers in inet_peer structure.

There is still a false sharing effect because refcnt is in first cache
line of object [were the links and keys used by lookups are located], we
might move it at the end of inet_peer structure to let this first cache
line mostly read by cpus.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Andi Kleen <andi@firstfloor.org>
CC: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-06-08 17:05:30 -07:00
..
ABI Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 2011-05-26 10:55:15 -07:00
accounting getdelays: show average CPU/IO/SWAP/RECLAIM delays 2011-05-26 17:12:34 -07:00
acpi ACPI: Split out custom_method functionality into an own driver 2011-05-29 01:50:40 -04:00
aoe
arm Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2011-05-25 21:47:48 +01:00
auxdisplay
blackfin
block
blockdev cciss: add cciss_tape_cmds module paramter 2011-05-06 08:23:59 -06:00
cdrom
cgroups cgroup: remove the ns_cgroup 2011-05-26 17:12:34 -07:00
connector
console
cpu-freq
cpuidle
cris
crypto
development-process
device-mapper
devicetree Merge branches 'devel', 'devel-stable' and 'fixes' into for-linus 2011-05-27 22:59:57 +01:00
DocBook Merge git://git.infradead.org/mtd-2.6 2011-05-27 20:06:53 -07:00
driver-model driver core: remove the driver-model structures from the documentation 2011-05-06 18:01:05 -07:00
dvb
early-userspace
fault-injection
fb
filesystems Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2011-05-28 13:03:41 -07:00
firmware_class
frv
hid
hwmon hwmon: New driver for the SMSC EMC6W201 2011-05-25 20:43:33 +02:00
i2c i2c-i801: SMBus patch for Intel Panther Point DeviceIDs 2011-05-24 20:58:49 +02:00
i2o
ia64
ide
infiniband
input Input: elantech - describe further the protocol 2011-05-16 22:48:24 -07:00
ioctl Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-05-25 16:55:55 -07:00
isdn
ja_JP
kbuild Merge branch 'kconfig-for-40' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-25 16:54:01 -07:00
kdump
ko_KR
laptops acer-wmi: Delete out-of-date documentation 2011-05-27 12:36:46 -04:00
leds
m68k
make
mips
misc-devices
mmc mmc: MMC boot partitions support. 2011-05-24 21:01:21 -04:00
mn10300
mtd
namespaces
netlabel
networking inetpeer: remove unused list 2011-06-08 17:05:30 -07:00
nfc
parisc
PCI
pcmcia
power regulator: Remove supply_regulator_dev from machine configuration 2011-05-27 10:34:37 +01:00
powerpc
pps
prctl
pti Kernel documentation for the PTI feature. 2011-05-13 16:31:00 -07:00
ptp ptp: Added a brand new class driver for ptp clocks. 2011-05-23 13:01:00 -07:00
rapidio
RCU rcu: Decrease memory-barrier usage based on semi-formal proof 2011-05-26 09:42:23 -07:00
s390
scheduler
scsi [SCSI] megaraid_sas: Version and Changelog update 2011-05-24 12:36:06 -04:00
security Create Documentation/security/, 2011-05-19 15:59:38 -07:00
serial
sh
sound Merge branch 'topic/hda' into for-linus 2011-05-22 10:01:35 +02:00
sparc
spi
sysctl coredump: add support for exe_file in core name 2011-05-26 17:12:36 -07:00
target
telephony
thermal
timers doc: timers-howto: fix a typo ("unsgined") 2011-05-17 10:52:02 +02:00
trace
usb Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2011-05-23 12:33:02 -07:00
video4linux [media] uvcvideo: Add driver documentation 2011-05-20 09:30:36 -03:00
virtual lguest: remove support for VIRTIO_F_NOTIFY_ON_EMPTY. 2011-05-30 11:14:12 +09:30
vm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem 2011-05-26 10:50:56 -07:00
w1
watchdog
wimax
x86 x86, gart: Rename pci-gart_64.c to amd_gart_64.c 2011-05-10 17:22:06 +02:00
zh_CN Translated Documentation/email-clients.txt 2011-05-06 17:59:20 -07:00
.gitignore
00-INDEX Merge branch 'docs-security' into docs-move 2011-05-20 09:10:04 -07:00
applying-patches.txt
atomic_ops.txt Documentation/atomic_ops.txt: avoid volatile in sample code 2011-05-26 17:12:34 -07:00
bad_memory.txt
basic_profiling.txt
binfmt_misc.txt
braille-console.txt
bt8xxgpio.txt
btmrvl.txt
BUG-HUNTING
bus-virt-phys-mapping.txt
cachetlb.txt mm: convert mm->cpu_vm_cpumask into cpumask_var_t 2011-05-25 08:39:21 -07:00
Changes
circular-buffers.txt
coccinelle.txt
CodingStyle
cpu-hotplug.txt
cpu-load.txt
cputopology.txt
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
dell_rbu.txt
devices.txt
DMA-API-HOWTO.txt
DMA-API.txt
DMA-attributes.txt
DMA-ISA-LPC.txt
dmaengine.txt dmaengine: Add API documentation for slave dma usage 2011-05-25 14:49:20 -07:00
dontdiff Documentation: update dontdiff file 2011-05-23 15:14:11 -07:00
dynamic-debug-howto.txt
edac.txt
eisa.txt
email-clients.txt
feature-removal-schedule.txt Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6 2011-05-29 11:18:09 -07:00
flexible-arrays.txt
futex-requeue-pi.txt
gcov.txt
gpio.txt
highuid.txt
HOWTO Documentation: update LXR web link 2011-05-23 15:14:11 -07:00
hw_random.txt
hwspinlock.txt
init.txt
initrd.txt
intel_txt.txt
Intel-IOMMU.txt
io_ordering.txt
io-mapping.txt
iostats.txt
IPMI.txt
IRQ-affinity.txt bitmap, irq: add smp_affinity_list interface to /proc/irq 2011-05-25 08:39:45 -07:00
IRQ.txt
irqflags-tracing.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt Merge git://git.infradead.org/iommu-2.6 2011-06-02 05:48:50 +09:00
kmemcheck.txt
kmemleak.txt
kobject.txt
kprobes.txt
kref.txt
ldm.txt
local_ops.txt
lockdep-design.txt
lockstat.txt Documentation: Add statistics about nested locks 2011-05-28 17:03:29 +02:00
logo.gif
logo.txt
magic-number.txt
Makefile
ManagementStyle
mca.txt
md.txt
media-framework.txt
memory-barriers.txt
memory-hotplug.txt
memory.txt
mono.txt
mutex-design.txt
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
padata.txt
parport-lowlevel.txt
parport.txt
pi-futex.txt
pnp.txt
preempt-locking.txt
printk-formats.txt
prio_tree.txt
rbtree.txt
rfkill.txt
robust-futex-ABI.txt
robust-futexes.txt
rt-mutex-design.txt
rt-mutex.txt
rtc.txt
SAK.txt
SecurityBugs
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
SM501.txt
sparse.txt
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
SubmitChecklist
SubmittingDrivers
SubmittingPatches Documentation: update GregKH links 2011-05-23 15:14:11 -07:00
svga.txt
sysfs-rules.txt
sysrq.txt
unaligned-memory-access.txt
unicode.txt
unshare.txt
VGA-softcursor.txt
vgaarbiter.txt Documentation: fix vgaarbiter.txt typos etc. 2011-05-23 15:14:11 -07:00
video-output.txt
volatile-considered-harmful.txt
workqueue.txt
xz.txt
zorro.txt