• E
    ipv6: addrlabel: per netns list · a90c9347
    Eric Dumazet 提交于
    Having a global list of labels do not scale to thousands of
    netns in the cloud era. This causes quadratic behavior on
    netns creation and deletion.
    
    This is time having a per netns list of ~10 labels.
    
    Tested:
    
    $ time perf record (for f in `seq 1 3000` ; do ip netns add tast$f; done)
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 3.637 MB perf.data (~158898 samples) ]
    
    real    0m20.837s # instead of 0m24.227s
    user    0m0.328s
    sys     0m20.338s # instead of 0m23.753s
    
        16.17%       ip  [kernel.kallsyms]  [k] netlink_broadcast_filtered
        12.30%       ip  [kernel.kallsyms]  [k] netlink_has_listeners
         6.76%       ip  [kernel.kallsyms]  [k] _raw_spin_lock_irqsave
         5.78%       ip  [kernel.kallsyms]  [k] memset_erms
         5.77%       ip  [kernel.kallsyms]  [k] kobject_uevent_env
         5.18%       ip  [kernel.kallsyms]  [k] refcount_sub_and_test
         4.96%       ip  [kernel.kallsyms]  [k] _raw_read_lock
         3.82%       ip  [kernel.kallsyms]  [k] refcount_inc_not_zero
         3.33%       ip  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
         2.11%       ip  [kernel.kallsyms]  [k] unmap_page_range
         1.77%       ip  [kernel.kallsyms]  [k] __wake_up
         1.69%       ip  [kernel.kallsyms]  [k] strlen
         1.17%       ip  [kernel.kallsyms]  [k] __wake_up_common
         1.09%       ip  [kernel.kallsyms]  [k] insert_header
         1.04%       ip  [kernel.kallsyms]  [k] page_remove_rmap
         1.01%       ip  [kernel.kallsyms]  [k] consume_skb
         0.98%       ip  [kernel.kallsyms]  [k] netlink_trim
         0.51%       ip  [kernel.kallsyms]  [k] kernfs_link_sibling
         0.51%       ip  [kernel.kallsyms]  [k] filemap_map_pages
         0.46%       ip  [kernel.kallsyms]  [k] memcpy_erms
    Signed-off-by: NEric Dumazet <edumazet@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    a90c9347
addrlabel.c 14.0 KB