On Wed, 15 Feb 2017 09:44:35 +0100, Thomas Monjalon <[email protected]> wrote: > Do we need to discuss again the prefetch calls inside DPDK > or can we definitely close this kind of request? > mbuf: http://dpdk.org/patch/4678/ > ethdev: http://dpdk.org/patch/8867/ >
About the mbuf prefetch, I suggest the topic can be closed: The rte_pkt_mbuf_alloc() function is not necessarily called in a place where we will write the second cache line, so the prefetch is not always useful. Having prefetches in generic functions does not look to be a good idea, especially in that case, knowing it's easy to do it in the application. Olivier > > 2015-07-20 10:02, Olivier MATZ: > > Hi Thomas, > > > > > > On 07/20/2015 03:00 AM, Thomas Monjalon wrote: > > > Please Olivier, > > > What is the status of this patch? > > > > From what I remember, the last mail was a comment from Konstantin > > on another thread (but same topic): > > http://dpdk.org/ml/archives/dev/2015-May/017633.html > > > > > > Regards, > > Olivier > > > > > > > > > > 2015-05-12 01:15, Paul Emmerich: > > >> this improves the throughput of a simple tx-only application by > > >> 11% in the full-featured ixgbe tx path and by 14% in the simple > > >> tx path. --- > > >> lib/librte_mbuf/rte_mbuf.h | 1 + > > >> 1 file changed, 1 insertion(+) > > >> > > >> diff --git a/lib/librte_mbuf/rte_mbuf.h > > >> b/lib/librte_mbuf/rte_mbuf.h index ab6de67..f6895b4 100644 > > >> --- a/lib/librte_mbuf/rte_mbuf.h > > >> +++ b/lib/librte_mbuf/rte_mbuf.h > > >> @@ -538,6 +538,7 @@ static inline struct rte_mbuf > > >> *__rte_mbuf_raw_alloc(struct rte_mempool *mp) if > > >> (rte_mempool_get(mp, &mb) < 0) return NULL; > > >> m = (struct rte_mbuf *)mb; > > >> + rte_prefetch0(&m->cacheline1); > > >> RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(m) == 0); > > >> rte_mbuf_refcnt_set(m, 1); > > >> return (m); > > >> > > > > > > > >

