• Eric Dumazet's avatar
    inetpeer: remove unused list · 4b9d9be8
    Eric Dumazet authored
    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: default avatarEric Dumazet <eric.dumazet@gmail.com>
    CC: Andi Kleen <andi@firstfloor.org>
    CC: Tim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4b9d9be8
Name
Last commit
Last update
..
acpi Loading commit data...
asm-generic Loading commit data...
crypto Loading commit data...
drm Loading commit data...
keys Loading commit data...
linux Loading commit data...
math-emu Loading commit data...
media Loading commit data...
mtd Loading commit data...
net Loading commit data...
pcmcia Loading commit data...
rdma Loading commit data...
rxrpc Loading commit data...
scsi Loading commit data...
sound Loading commit data...
staging Loading commit data...
target Loading commit data...
trace Loading commit data...
video Loading commit data...
xen Loading commit data...
Kbuild Loading commit data...