>I am afraid I don't understand what the issue is.
>
>the pull_tail() in itself is not a performance issue : Intel guys only
>fixed last gays ago fact that IGB/IXGBE drivers were not pulling tcp
>headers in skb->head , and nobody noticed.
>
>Real cost is the cache line miss.
>
>Now, if you pull too many bytes in skb->head, say part of TCP payload,
>you lose opportunities in TCP coalescing or splice().
With patch v4 netperf and NFS receive performance raises to the
expected values. As I'm no expert in this I can only repost the
initial performance report that started the whole discussion.
__pskb_pull_tail consumes a lot time on our XEON L5420 test
server.
...
- server side: netserver -p 12345
- client side: netperf -H <server_ip> -p 12345 -l 120
Analysis was performed on the server side with
- perf record -a -g sleep 10
- perf report
# Overhead Symbol
# ........ .............................................
#
19.67% [k] copy_user_generic_string
|
|--99.74%-- skb_copy_datagram_iovec
| tcp_recvmsg
| inet_recvmsg
| sock_recvmsg
| sys_recvfrom
| system_call_fastpath
| recv
| |
| |--50.17%-- 0x7074656e00667265
| |
| --49.83%-- 0x6672657074656e
--0.26%-- [...]
7.38% [k] memcpy
|
|--84.56%-- __pskb_pull_tail
| |
| |--81.88%-- pskb_may_pull.part.6
| | skb_gro_header_slow
| | inet_gro_receive
| | dev_gro_receive
| | napi_gro_receive
| | ipoib_ib_handle_rx_wc
| | ipoib_poll
| | net_rx_action
| | __do_softirq
Markus
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html