Hi Stephen,
> -----Original Message----- > From: Stephen Hemminger <step...@networkplumber.org> > Sent: Monday, July 1, 2019 4:30 AM > To: Gavin Hu (Arm Technology China) <gavin...@arm.com> > Cc: dev@dpdk.org; tho...@monjalon.net; jer...@marvell.com; > hemant.agra...@nxp.com; bruce.richard...@intel.com; > chao...@linux.vnet.ibm.com; Honnappa Nagarahalli > <honnappa.nagaraha...@arm.com>; nd <n...@arm.com> > Subject: Re: [dpdk-dev] [RFC 0/5] use WFE for locks and ring on aarch64 > > On Mon, 1 Jul 2019 00:21:11 +0800 > Gavin Hu <gavin...@arm.com> wrote: > > > DPDK has multiple use cases where the core repeatedly polls a location in > > memory. This polling results in many cache and memory transactions. > > > > Arm architecture provides WFE (Wait For Event) instruction, which allows > > the cpu core to enter a low power state until woken up by the update to the > > memory location being polled. Thus reducing the cache and memory > > transactions. > > > > x86 has the PAUSE hint instruction to reduce such overhead. > > > > The rte_wait_until_equal_xxx APIs abstract the functionality of 'polling > > for a memory location to become equal to a given value'. > > > > For non-Arm platforms, these APIs are just wrappers around do-while loop > > with rte_pause, so there are no performance differences. > > > > For Arm platforms, use of WFE can be configured using > CONFIG_RTE_USE_WFE > > option. It is disabled by default. > > > > Currently, use of WFE is supported only for aarch64 platforms. armv7 > > platforms do support the WFE instruction, but they require explicit wake up > > events(sev) and are less performannt. > > > > Testing shows that, performance varies across different platforms, with > > some showing degradation. > > > > CONFIG_RTE_USE_WFE should be enabled depending on the performance > on the > > target platforms. > > How does this work if process is preempted? WFE won't prevent pre-emption from the kernel as that is down to a timer/re-scheduling interrupt. Software using the WFE mechanism must tolerate spurious wake-up events, including timer/re-scheduling interrupts, so a re-check of the condition upon exit of WFE is needed to be in place(this is already included in the patch)