> On Sep 10, 2018, at 6:28 AM, Sofia Baran <[email protected]> wrote:
> 
> 
> Hi All,
> 
> I want/try to us DPDK for transferring larger amount of data, e.g. video 
> frames which usually are stored within memory buffers with sizes of several 
> MB (remark: by using huges pages, these buffers could be physically 
> contiguous).
> 
> When looking at the DPDK documentation, library APIs and examples, I can't 
> find a way/hint how to transfer larger buffers using DPDK without copying the 
> video buffer fragments to the payload sections of the mbufs - which results 
> in high CPU loads.
> 
> Within the ip_fragmentation example indirect mbufs are used, pointing to the 
> payload section of a direct mbuf (holding the header). But in my 
> understanding the maximum size of a mbuf payload is 65KB (uint16_t)!?

It is true that mbufs only hold (64K - 1). The concept of mbufs is normally an 
ethernet packet and they are limited to 64K.

You can create a small mbuf (128 bytes) then set offset/data in the mbuf to 
point to the video buffer only if you can find the physical memory address for 
the data. The mbuf normally holds the physical address of the mbuf->data not 
the attached buffer in this case. This of course means you have to manage the 
mbuf internal structure members yourself and be very careful you do not 
rearrange the mbuf members as that can cause a performance problem.

> 
> I'm pretty new to DPDK so maybe I missed something. I hope that someone can 
> provide me some hits how to avoid copying the entire payload.
> 
> Thanks
> Sofia Baran
> 
> 

Regards,
Keith

Reply via email to