Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jul 2022 14:00:38 -0700
From:      Eric Joyner <erj@freebsd.org>
To:        freebsd-net <freebsd-net@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Looking for feedback on change to iflib and transmit queuing
Message-ID:  <CA%2Bb0zg8rns_WAXzpH3VQi9W=2ZXOE5tECuH62OyoyYKVoT7xgA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--000000000000568da205e4f7f300
Content-Type: text/plain; charset="UTF-8"

Hi, I have a Phabricator review here that I was hoping to get some feedback
on: https://reviews.freebsd.org/D34742

In short, there's already some functionality in current and 13.1-RELEASE
that allows a driver to pick a TX queue for a packet, but this extends that
support to have iflib do some limited parsing in order to give the driver
function extra information in order to make a decision. Performance-wise
this doesn't seem to affect much; I looked at it in VTune across different
types of netperf runs with small packets that want L4 checksums.

In fact, that made me find out that iflib_parse_header() does tons of
unnecessary m_pullups() on small UDP packets; as much as 10% of the CPU
time can be spent just doing that. It should maybe get modified to not
pull-up to the TCP header length for UDP packets.

- Eric

--000000000000568da205e4f7f300
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi, I have a Phabricator review here that I was hoping to =
get some feedback on:=C2=A0<a href=3D"https://reviews.freebsd.org/D34742">h=
ttps://reviews.freebsd.org/D34742</a><div><br></div><div>In short, there&#3=
9;s already some functionality in current and 13.1-RELEASE that allows a dr=
iver to pick a TX queue for a packet, but this extends that support to have=
 iflib do some limited parsing in order to give the driver function extra i=
nformation in order to make a decision. Performance-wise this doesn&#39;t s=
eem to affect much; I looked at it in VTune across different types of netpe=
rf runs with small packets that want L4 checksums.</div><div><br></div><div=
>In fact, that made me find out that iflib_parse_header() does tons of unne=
cessary m_pullups() on small UDP packets; as much as 10% of the CPU time ca=
n be spent just doing that. It should maybe get modified to not pull-up to =
the TCP header length for UDP packets.</div><div><br></div><div>- Eric</div=
></div>

--000000000000568da205e4f7f300--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2Bb0zg8rns_WAXzpH3VQi9W=2ZXOE5tECuH62OyoyYKVoT7xgA>