On Sat, Feb 20, 2021 at 08:40:02AM +0000, liweihang wrote:
On 2021/2/10 3:54, Jason Gunthorpe wrote:
On Sun, Feb 07, 2021 at 11:12:49AM +0800, Weihang Li wrote:
The HIP09 introduces the DCA(Dynamic Context Attachment) feature which supports many RC QPs to share the WQE buffer in a memory pool. If a QP enables DCA feature, the WQE's buffer will not be allocated when creating but when the users start to post WRs. This will reduce the memory consumption when there are too many QPs are inactive. One a WQE buffer is allocated it still acts as a normal WQE ring
buffer? So this DCA logic is to remap the send queue buffer based on demand for SQEs? How does it interact with the normal max send queue entries reported?
Not exactly. If DCA is enabled, we first allocate a memory pool with a default size when opening device. Each time we trying to post WR(s) to a QP, the driver will check if current QP has WQE buffer.
If not, the driver will check whether there is enough free memory in the DCA memory pool. If there is, the QP will get WQE buffer from the pool,
Does that mean the QP can have a non-contiguous list of buffers? Ie it isn't just a linear ring of memory?
Jason