Date: Thu, 25 Oct 2001 23:44:51 -0700 (PDT) From: Luigi Rizzo <luigi@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/sys mbuf.h Message-ID: <200110260644.f9Q6ipn98185@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
luigi 2001/10/25 23:44:51 PDT
Modified files: (Branch: RELENG_4)
sys/sys mbuf.h
Log:
As discussed on -net, let M_LEADINGSPACE return a non-zero value
for standard clusters with a refcnt of 1. This cannot possibly
cause problems because it is exactly the same test performed when
m_free'ing a cluster.
This is mostly beneficial for boxes acting as routers, because M_PREPEND
can now write the MAC header for forwarded packets into a cluster, instead
of having to allocate a new mbuf and possibly hitting performance bugs on
some NICs which cannot handle well scatter-gather I/O. I have measured
a 15% improvement in the peak forwarding rate on a box using 21143 NICs.
Note that to fully exploit non-shared clusters we also need to provide
an m_pullup() variant which allows the pulled-up chunk of data to
remain in the cluster, and use the new interface instead of m_pullup()
when required (e.g. in ip_fw etc.).
This does not go in CURRENT as is: as discussed in -net,
M_LEADINGSPACE should not check for writability, just report
available space, leaving the check to some other piece of code.
Unfortunately, some code in the tree depends on M_LEADINGSPACE
checking for writability, and so implementing M_LEADINGSPACE
in the correct way also requires to fix the incorrect usage.
This is what will be done in CURRENT, but for STABLE, this is
probably more than we want, and so we are happy (more or less) with
this simple fix.
Revision Changes Path
1.44.2.11 +6 -3 src/sys/sys/mbuf.h
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200110260644.f9Q6ipn98185>
