On 7/7/2020 6:07 AM, patrick...@intel.com wrote: > From: Patrick Fu <patrick...@intel.com> > > Performing large memory copies usually takes up a major part of CPU > cycles and becomes the hot spot in vhost-user enqueue operation. To > offload expensive memory operations from the CPU, this patch set > proposes to leverage DMA engines, e.g., I/OAT, a DMA engine in the > Intel's processor, to accelerate large copies. > > Large copies are offloaded from the CPU to the DMA in an asynchronous > manner. The CPU just submits copy jobs to the DMA but without waiting > for its copy completion. Thus, there is no CPU intervention during > data transfer; we can save precious CPU cycles and improve the overall > throughput for vhost-user based applications, like OVS. During packet > transmission, it offloads large copies to the DMA and performs small > copies by the CPU, due to startup overheads associated with the DMA. > > This patch set construct a general framework that applications can > leverage to attach DMA channels with vhost-user transmit queues. Four > new RTE APIs are introduced to vhost library for applications to > register and use the asynchronous data path. In addition, two new DMA > operation callbacks are defined, by which vhost-user asynchronous data > path can interact with DMA hardware. Currently only enqueue operation > for split queue is implemented, but the framework is flexible to extend > support for packed queue. > > v2: > update meson file for new header file > update rte_vhost_version.map to include new APIs > rename async APIs/structures to be prefixed with "rte_vhost" > rename some variables/structures for readibility > correct minor typo in comments/license statements > refine memory allocation logic for vq internal buffer > add error message printing in some failure cases > check inflight async packets in unregistration API call > mark new APIs as experimental > > v3: > use atomic_xxx() functions in updating ring index > fix a bug in async enqueue failure handling > > v4: > part of the fix intended in v3 patch was missed, this patch > adds all thoes fixes > > v5: > minor changes on some function/variable names > reset CPU batch copy packet count when async enqueue error > occurs > disable virtio log feature in async copy mode > minor optimization on async shadow index flush > > v6: > add some background introduction in the commit message > > Patrick Fu (2): > vhost: introduce async enqueue registration API > vhost: introduce async enqueue for split ring >
Reviewed-by: Chenbo Xia <chenbo....@intel.com> Series applied to dpdk-next-net/master, thanks.