[dpdk-dev] [PATCH v2 00/15] next-eventdev: event/sw software eventdev

Jerin Jacob jerin.jacob at caviumnetworks.com
Mon Feb 6 09:07:18 CET 2017


On Tue, Jan 31, 2017 at 04:14:18PM +0000, Harry van Haaren wrote:
> The following patchset adds software eventdev implementation
> to the next-eventdev tree.
> 
> This implementation is based on the previous software eventdev
> v1 patchset, now with comments addressed:
> 1) xstats api return values changed to be consistent
> 2) xstats api [out] added to appropriate values
> 3) xstats api now uses xxx_get() for consistency
> 4) patch names for check-log.sh

Nice to have name the in bracket who suggested it.

> 5) checkpatch issues resolved (where it makes sense to, there are
>    certain places where fixing checkpatch makes the code less readable.
>    These checkpatch warnings will still show up - I see no alternative)

I agree. Except a few lines in the test code with
rte_event_dev_xstats_by_name_get

> 
> In addition, the following improvements have been made to the patchset:
> 1) Adds test to run automatically with make test
> 2) Rework the sw implementation event credit scheme
> 
> The first two patches make changes to the eventdev API,
> then the software implementation is added, and finally
> tests are added for the sw eventdev implementation.

Two issue found in testing. If it makes sense, fix it in test code or
implementation

1) Running eventdev_common_autotest with event_sw0

sudo ./build/app/test  --vdev='event_sw0'
RTE>>eventdev_common_autotest

TestCase test_eventdev_port_setup() line 437 failed: Expected -EINVAL, 0
 + TestCase [11] : test_eventdev_port_setup failed 
 + TestCase [12] : test_eventdev_dequeue_depth succeeded
 + TestCase [13] : test_eventdev_enqueue_depth succeeded
 + TestCase [14] : test_eventdev_port_count succeeded
TestCase test_eventdev_timeout_ticks() line 522 failed (err -95): Fail
to get timeout_ticks
 + TestCase [15] : test_eventdev_timeout_ticks failed 
sw_start 543: queue 0 not configured
TestCase test_eventdev_start_stop() line 547 failed (err -1): Failed to
start device0
 + TestCase [16] : test_eventdev_start_stop failed 
sw_start 543: queue 0 not configured
TestCase eventdev_setup_device() line 573 failed (err -1): Failed to
start device0
EVENTDEV: rte_event_dev_stop() line 1026: Device with dev_id=0already
stopped
 + TestCase [17] : test_eventdev_link failed 
sw_start 543: queue 0 not configured
TestCase eventdev_setup_device() line 573 failed (err -1): Failed to
start device0
EVENTDEV: rte_event_dev_stop() line 1026: Device with dev_id=0already
stopped
 + TestCase [18] : test_eventdev_unlink failed 
sw_start 543: queue 0 not configured
TestCase eventdev_setup_device() line 573 failed (err -1): Failed to
start device0
EVENTDEV: rte_event_dev_stop() line 1026: Device with dev_id=0already
stopped
 + TestCase [19] : test_eventdev_link_get failed 
sw_start 543: queue 0 not configured
TestCase eventdev_setup_device() line 573 failed (err -1): Failed to
start device0
 + TestCase [20] : test_eventdev_close failed 
PMD: Initializing event_skeleton1 on NUMA node 0


2) back to back eventdev_sw_autotest invocation

RTE>>eventdev_sw_autotest 
1926: Eventdev event_sw0 not found - creating.
PMD: Creating eventdev sw device event_sw0, numa_node=0,
sched_quanta=128, credit_quanta=32
*** Running Single Directed Packet test...
*** Running Single Load Balanced Packet test...
*** Running Unordered Basic test...
*** Running Ordered Basic test...
*** Running Burst Packets test...
*** Running Load Balancing test...
*** Running Prioritized Directed test...
*** Running Prioritized Atomic test...
*** Running Prioritized Ordered test...
*** Running Prioritized Unordered test...
*** Running Invalid QID test...
*** Running Load Balancing History test...
*** Running Inflight Count test...
*** Running Abuse Inflights test...
*** Running QID Priority test...
*** Running Head-of-line-blocking test...
*** Running Worker loopback test...
1791: 	Producer function started
1731: 	Worker function started
1889: 	Sched Rx = 10713728, Tx = 10713248
1889: 	Sched Rx = 21422880, Tx = 21422400
1889: 	Sched Rx = 32066688, Tx = 32066208
Test OK
RTE>>eventdev_
 eventdev_common_autotest [Mul-choice STRING]: launch autotest
 eventdev_sw_autotest [Mul-choice STRING]: launch autotest
RTE>>eventdev_sw_autotest 
*** Running Single Directed Packet test...
*** Running Single Load Balanced Packet test...
*** Running Unordered Basic test...
*** Running Ordered Basic test...
*** Running Burst Packets test...
*** Running Load Balancing test...
*** Running Prioritized Directed test...
*** Running Prioritized Atomic test...
*** Running Prioritized Ordered test...
*** Running Prioritized Unordered test...
*** Running Invalid QID test...
*** Running Load Balancing History test...
*** Running Inflight Count test...
*** Running Abuse Inflights test...
*** Running QID Priority test...
*** Running Head-of-line-blocking test...
*** Running Worker loopback test...
1791: 	Producer function started
1731: 	Worker function started
1889: 	Sched Rx = 502401, Tx = 501860
1889: 	Sched Rx = 502401, Tx = 501860
1889: 	Sched Rx = 502401, Tx = 501860
1889: 	Sched Rx = 502401, Tx = 501860
1889: 	Sched Rx = 502401, Tx = 501860
EventDev todo-fix-name: ports 2, qids 8
	rx   502401
	drop 0
	tx   501860
	sched calls: 6797287
	sched cq/qid call: 6818630
	sched no IQ enq: 6783503
	sched no CQ enq: 6781603
	inflight 4000, credits: 96
  Port 0 
	rx   4637	drop 0	tx   0	inflight 0
	Avg cycles PP: 0	Credits: 3
	Receive burst distribution:
		0:-nan% 
	rx ring used:    0	free: 4096
	cq ring used:    0	free:   32
  Port 1 
	rx   497764	drop 0	tx   501860	inflight 4096
	Avg cycles PP: 99	Credits: 33
	Receive burst distribution:
		0:100% 1-4:0.00% 29-32:0.01% 
	rx ring used: 4068	free:   28
	cq ring used:    0	free:   32
  Queue 0 (Atomic)
	rx   63682	drop 0	tx   63652
	Inflights: 642	Flows pinned per port: 0 638 
	iq 0: Used 30	Free 481
  Queue 1 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 0	Flows pinned per port: 0 0 
	-- iqs empty --
  Queue 2 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 0	Flows pinned per port: 0 0 
	-- iqs empty --
  Queue 3 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 0	Flows pinned per port: 0 0 
	-- iqs empty --
  Queue 4 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 0	Flows pinned per port: 0 0 
	-- iqs empty --
  Queue 5 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 0	Flows pinned per port: 0 0 
	-- iqs empty --
  Queue 6 (Atomic)
	rx   63010	drop 0	tx   63010
	Inflights: 2351	Flows pinned per port: 0 1009 
	-- iqs empty --
  Queue 7 (Atomic)
	rx   60659	drop 0	tx   60148
	Inflights: 1103	Flows pinned per port: 0 937 
	iq 0: Used 511	Free 0
1899: No schedules for seconds, deadlock
ERROR - Worker loopback test FAILED.
Test Failed
RTE>>[


> 
> This patchset contains the work of multiple developers,
> please see signoffs on each patch.
> 
> Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
> 
> 
> Bruce Richardson (15):
>   eventdev: remove unneeded dependencies
>   eventdev: add APIs for extended stats
>   event/sw: add new software-only eventdev driver
>   event/sw: add device capabilities function
>   event/sw: add configure function
>   event/sw: add fns to return default port/queue config
>   event/sw: add support for event queues
>   event/sw: add support for event ports
>   event/sw: add support for linking queues to ports
>   event/sw: add worker core functions
>   event/sw: add scheduling logic
>   event/sw: add start stop and close functions
>   event/sw: add dump function for easier debugging
>   event/sw: add xstats support
>   app/test: add unit tests for SW eventdev driver
> 
>  app/test/Makefile                             |    5 +-
>  app/test/autotest_data.py                     |   26 +
>  app/test/test_sw_eventdev.c                   | 2071 +++++++++++++++++++++++++
>  config/common_base                            |    5 +
>  drivers/event/Makefile                        |    1 +
>  drivers/event/sw/Makefile                     |   69 +
>  drivers/event/sw/event_ring.h                 |  179 +++
>  drivers/event/sw/iq_ring.h                    |  176 +++
>  drivers/event/sw/rte_pmd_evdev_sw_version.map |    3 +
>  drivers/event/sw/sw_evdev.c                   |  754 +++++++++
>  drivers/event/sw/sw_evdev.h                   |  291 ++++
>  drivers/event/sw/sw_evdev_scheduler.c         |  602 +++++++
>  drivers/event/sw/sw_evdev_worker.c            |  186 +++
>  drivers/event/sw/sw_evdev_xstats.c            |  404 +++++
>  lib/librte_eventdev/Makefile                  |    1 -
>  lib/librte_eventdev/rte_eventdev.c            |   63 +
>  lib/librte_eventdev/rte_eventdev.h            |   85 +-
>  lib/librte_eventdev/rte_eventdev_pmd.h        |   60 +
>  lib/librte_eventdev/rte_eventdev_version.map  |    3 +
>  mk/rte.app.mk                                 |    1 +
>  20 files changed, 4981 insertions(+), 4 deletions(-)
>  create mode 100644 app/test/test_sw_eventdev.c
>  create mode 100644 drivers/event/sw/Makefile
>  create mode 100644 drivers/event/sw/event_ring.h
>  create mode 100644 drivers/event/sw/iq_ring.h
>  create mode 100644 drivers/event/sw/rte_pmd_evdev_sw_version.map
>  create mode 100644 drivers/event/sw/sw_evdev.c
>  create mode 100644 drivers/event/sw/sw_evdev.h
>  create mode 100644 drivers/event/sw/sw_evdev_scheduler.c
>  create mode 100644 drivers/event/sw/sw_evdev_worker.c
>  create mode 100644 drivers/event/sw/sw_evdev_xstats.c
> 
> -- 
> 2.7.4
> 


More information about the dev mailing list