Spdk/lib/event
Daniel Verkamp 52bbb267d8 event: process events in batches
Since we are usually going to be removing multiple events from the queue
at once, use the DPDK burst dequeue interface to improve efficiency.

Also rework the event queue runner to always process a fixed maximum
number of events per timeslice for simplicity.  This removes the
rte_ring_count() call from the hot path and improves fairness between
events and pollers.

Now that events are dequeued in bulk, we can also put the event objects
back into the mempool in bulk.  Add an env wrapper around
rte_mempool_put_bulk() and use it to free all of the events at once.

Basic performance benchmark using test/lib/event/event/event -t 10
is improved: previously ~40 million events per second, now ~46 million
events per second.

Change-Id: I432e8a48774a087eec2be3a64c38c339608af42a
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-11-07 09:32:25 -07:00
..
rpc build: include spdk.common.mk in lib Makefiles 2016-07-18 16:17:40 -07:00
app.c iscsi: fix comment issue. If not specified reactor mask , we only use core 0. (#48) 2016-10-20 09:37:05 -07:00
dpdk_init.c Replace RTE_VERIFY with assert 2016-09-28 10:15:56 -07:00
Makefile env: Make the environment library configurable. 2016-10-05 11:51:37 -07:00
reactor.c event: process events in batches 2016-11-07 09:32:25 -07:00
reactor.h event: Allow idle reactors to sleep 2016-08-17 10:02:38 -07:00
subsystem.c event: fix null pointer issue in spdk_subsystem_fini 2016-06-15 16:33:55 -07:00
subsystem.h Add event-driven application framework 2016-05-31 09:58:05 -07:00