On 10/15/21 1:54 PM, Xueming(Steven) Li wrote: > On Fri, 2021-10-15 at 12:28 +0300, Andrew Rybchenko wrote: >> On 10/12/21 5:39 PM, Xueming Li wrote: >>> In current DPDK framework, each Rx queue is pre-loaded with mbufs to >>> save incoming packets. For some PMDs, when number of representors scale >>> out in a switch domain, the memory consumption became significant. >>> Polling all ports also leads to high cache miss, high latency and low >>> throughput. >>> >>> This patch introduce shared Rx queue. Ports in same Rx domain and >>> switch domain could share Rx queue set by specifying non-zero sharing >>> group in Rx queue configuration. >>> >>> No special API is defined to receive packets from shared Rx queue. >>> Polling any member port of a shared Rx queue receives packets of that >>> queue for all member ports, source port is identified by mbuf->port. >>> >>> Shared Rx queue must be polled in same thread or core, polling a queue >>> ID of any member port is essentially same. >>> >>> Multiple share groups are supported by non-zero share group ID. Device >> >> "by non-zero share group ID" is not required. Since it must be >> always non-zero to enable sharing. >> >>> should support mixed configuration by allowing multiple share >>> groups and non-shared Rx queue. >>> >>> Even Rx queue shared, queue configuration like offloads and RSS should >>> not be impacted. >> >> I don't understand above sentence. >> Even when Rx queues are shared, queue configuration like >> offloads and RSS may differ. If a PMD has some limitation, >> it should care about consistency itself. These limitations >> should be documented in the PMD documentation. >> > > OK, I'll remove this line. > >>> >>> Example grouping and polling model to reflect service priority: >>> Group1, 2 shared Rx queues per port: PF, rep0, rep1 >>> Group2, 1 shared Rx queue per port: rep2, rep3, ... rep127 >>> Core0: poll PF queue0 >>> Core1: poll PF queue1 >>> Core2: poll rep2 queue0 >> >> >> Can I have: >> PF RxQ#0, RxQ#1 >> Rep0 RxQ#0 shared with PF RxQ#0 >> Rep1 RxQ#0 shared with PF RxQ#1 >> >> I guess no, since it looks like RxQ ID must be equal. >> Or am I missing something? Otherwise grouping rules >> are not obvious to me. May be we need dedicated >> shared_qid in boundaries of the share_group? > > Yes, RxQ ID must be equal, following configuration should work: > Rep1 RxQ#1 shared with PF RxQ#1
But I want just one RxQ on Rep1. I don't need two. > Equal mapping should work by default instead of a new field that must > be set. I'll add some description to emphasis, how do you think? Sorry for delay with reply. I think that above limitation is not nice. It is better to avoid it. [snip]