• Thomas Graf's avatar
    openvswitch: Use skb_zerocopy() for upcall · bda56f14
    Thomas Graf authored
    Use of skb_zerocopy() can avoid the expensive call to memcpy()
    when copying the packet data into the Netlink skb. Completes
    checksum through skb_checksum_help() if not already done in
    GSO segmentation.
    
    Zerocopy is only performed if user space supported unaligned
    Netlink messages. memory mapped netlink i/o is preferred over
    zerocopy if it is set up.
    
    Cost of upcall is significantly reduced from:
    +   7.48%       vhost-8471  [k] memcpy
    +   5.57%     ovs-vswitchd  [k] memcpy
    +   2.81%       vhost-8471  [k] csum_partial_copy_generic
    
    to:
    +   5.72%     ovs-vswitchd  [k] memcpy
    +   3.32%       vhost-5153  [k] memcpy
    +   0.68%       vhost-5153  [k] skb_zerocopy
    
    (megaflows disabled)
    Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
    Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
    bda56f14
datapath.c 46.7 KB