Discussion:
RFC: m_tag pool cache
(too old to reply)
Joerg Sonnenberger
2016-02-19 10:38:49 UTC
Permalink
Of course, m_tag_get() is used by packet processing path, this overhead
would have a certain influence on packet throughput and latency.
So, I think m_tag should use a dedicated pool cache like mbuf to call
pool_cache_get() directly.
Which tags are you actually seeing allocated? It would be better to
remove the tags in first place if they are hot enough...

Joerg

--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
Joerg Sonnenberger
2016-02-19 12:25:36 UTC
Permalink
Hi,
Post by Joerg Sonnenberger
Of course, m_tag_get() is used by packet processing path, this overhead
would have a certain influence on packet throughput and latency.
So, I think m_tag should use a dedicated pool cache like mbuf to call
pool_cache_get() directly.
Which tags are you actually seeing allocated? It would be better to
remove the tags in first place if they are hot enough...
I am seeing a struct altq_pktattr tag, which is used to refactor ALTQ
in my working modification. I think ALTQ code would become better than
now by using altq_pktattr tag...
# The altq_pktattr tag is also used by sys/dist/pf/net/pf.c, so I think
# the result affect NetBSD-current itself.
I agree it should be removed in first place. However, I think there is
several cases which cannot avoid to use m_tag. So, it may be required
to rescue such cases.
We don't have that many random consumers of tags in the tree. For the
hot cases, it makes a lot more sense to put a field or two into the mbuf
packet header -- if more data is needed, a specific pool is needed
anyway.

Joerg

--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
Loading...