git: tcp: Let sosendtcp() call tcp_usrreq.pru_send asynchronous

看板DFBSD_commit作者時間14年前 (2011/10/24 20:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 0ad8e15ea0059b225c9aa255b844cb9ec48d5227 Author: Sepherosa Ziehau <sephe@dragonflybsd.org> Date: Sun Oct 23 20:55:16 2011 +0800 tcp: Let sosendtcp() call tcp_usrreq.pru_send asynchronous - Embed netmsg_pru_send into mbuf.m_hdr, which shares the space with netmsg_pru_packet. - Use the newly added netmsg_pru_send in mbuf to perform asynchronous pru_send. For asynchronous pru_send, PRUS_NOREPLY is added, which prevents pru_send to reply the message. - In sosendtcp(), if we have more data to call pru_send, we call it asynchronously. The last piece of data or OOB data will still be passed to pru_send synchronously. On Phenom 9550 (4 core, 2.2GHz): 8 parallel netperf -H 127.0.0.1 (4 runs, unit: Mbps) old 5863.85 5773.13 5534.14 5506.72 new 6735.98 6903.13 6971.89 7056.66 This give ~20% performance improvement. It has no obvious impact on 1000BaseT or 100baseTX network performace. Summary of changes: sys/kern/uipc_msg.c | 18 ++++++++++++++++++ sys/kern/uipc_socket.c | 10 +++++++++- sys/net/netmsg.h | 1 + sys/netinet/tcp_usrreq.c | 12 ++++++++---- sys/sys/mbuf.h | 7 ++++++- sys/sys/socketops.h | 3 +++ 6 files changed, 45 insertions(+), 6 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0ad8e15ea0059b225c9aa255b844cb9ec48d5227 -- DragonFly BSD source repository
文章代碼(AID): #1EfLh7fX (DFBSD_commit)