• Eric Dumazet's avatar
    kobject: copy env blob in one go · 4a336a23
    Eric Dumazet authored
    No need to iterate over strings, just copy in one efficient memcpy() call.
    time perf record "(for f in `seq 1 3000` ; do ip netns add tast$f; done)"
    [ perf record: Woken up 10 times to write data ]
    [ perf record: Captured and wrote 8.224 MB perf.data (~359301 samples) ]
    real    0m52.554s  # instead of 1m7.492s
    user    0m0.309s
    sys 0m51.375s # instead of 1m6.875s
         9.88%       ip  [kernel.kallsyms]  [k] netlink_broadcast_filtered
         8.86%       ip  [kernel.kallsyms]  [k] string
         7.37%       ip  [kernel.kallsyms]  [k] __ip6addrlbl_add
         5.68%       ip  [kernel.kallsyms]  [k] netlink_has_listeners
         5.52%       ip  [kernel.kallsyms]  [k] memcpy_erms
         4.76%       ip  [kernel.kallsyms]  [k] __alloc_skb
         4.54%       ip  [kernel.kallsyms]  [k] vsnprintf
         3.94%       ip  [kernel.kallsyms]  [k] format_decode
         3.80%       ip  [kernel.kallsyms]  [k] kmem_cache_alloc_node_trace
         3.71%       ip  [kernel.kallsyms]  [k] kmem_cache_alloc_node
         3.66%       ip  [kernel.kallsyms]  [k] kobject_uevent_env
         3.38%       ip  [kernel.kallsyms]  [k] strlen
         2.65%       ip  [kernel.kallsyms]  [k] _raw_spin_lock_irqsave
         2.20%       ip  [kernel.kallsyms]  [k] kfree
         2.09%       ip  [kernel.kallsyms]  [k] memset_erms
         2.07%       ip  [kernel.kallsyms]  [k] ___cache_free
         1.95%       ip  [kernel.kallsyms]  [k] kmem_cache_free
         1.91%       ip  [kernel.kallsyms]  [k] _raw_read_lock
         1.45%       ip  [kernel.kallsyms]  [k] ksize
         1.25%       ip  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
         1.00%       ip  [kernel.kallsyms]  [k] widen_string
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
kobject_uevent.c 14.4 KB