Ask about CQE_COMPRESSION

Hi,

I want to know more about the CQE_COMPRESSION option.

​The description of the guide document is too simple to understand. Detailed explanation is required.

  • A detailed description of the CQE_COMPRESSION option
  • ​What are the BALANCE and AGRESSIVE settings?
  • What is the difference between BALANCE and AGRESSIVE settings?
  • Which of the following is more advantageous in terms of performance, BALANCE and AGRESSIVE?

[root@SNIPER bin]# mlxconfig -d mlx5_0 q |grep -i cqe

CQE_COMPRESSION BALANCED(0)

[root@SNIPER ~]# mlxconfig -d mlx5_0 q |grep -i cqe

CQE_COMPRESSION AGGRESSIVE(1)

Hi HC Kim,

  • CQE compression feature is meant to save PCIe bandwidth.

It reduces PCI overhead by coalescing and compressing multiple CQEs into a single merged CQE.

Successful compressing improves message rate especially for small packet traffic.

Note that the driver can enable compression on a per CQE basis.

CQE Compressing in details:

Instead of writing full CQEs to memory, multiple almost identical CQEs are merged and compressed.

Information that is shared between the CQEs is written once, regardless of the number of compressed CQEs.

In addition, only the unique information (small amount of bytes compared to full CQE size) is written per CQE.

  • When using moderate mode (BALANCED) then there are only few CQE patched together, while in AGGRESSIVE there could be an order of magnitude CQE’s patched.

Thus, for maximum performance aggressive mode is more advantageous.

Regards,

Chen