v3: fix checkpatch.pl errors and warnings. v2: rebase to Matias' ordered queue impl, fix clang compilation.
This patchset provides an alternate scheduler which can be enabled with --enable-schedule-iquery configuration option. Run l2fwd and odp_scheduling performance test programs show equivalent performance with the improved default scheduler, and can benifit use cases of fewer queue count such as microservices, etc. Supported parallel, atomic and ordered queue, with pktio polling. ordered queue re-uses the algorithm in default scheduler. pktio polling re-uses the same algorithm in default scheduler. l2fwd performance: 2 x 10GE, 64B frame, Bi-directional -- DPDK pktgen -- -- ODP-linux l2fwd (DPDK pktio) -- 2 x E5-2650 v3 @ 2.30GHz 40 cores "DIRECT (REFERENCE)" PARALLEL ATOMIC core default (improved, Petri) default iquery default iquery 1 20% 16% 16% 16% 16% 2 38% 27% 28% 26% 24% 4 37% 16% 16% 5% 5% * Multi-core scaling downgrade may be related to software DPDK pktgen receive issue Yi He (4): linux-gen: sched: solve ordered context inversion linux-gen: sched: add unsched_queue callback linux-gen: add generic bitmaps and iterators linux-gen: add interests query (iquery) scheduler platform/linux-generic/Makefile.am | 3 + .../linux-generic/include/odp_bitmap_internal.h | 320 ++++ platform/linux-generic/include/odp_schedule_if.h | 5 + platform/linux-generic/m4/odp_schedule.m4 | 7 + platform/linux-generic/odp_bitmap.c | 315 ++++ platform/linux-generic/odp_queue.c | 7 +- platform/linux-generic/odp_schedule.c | 13 +- platform/linux-generic/odp_schedule_if.c | 6 + platform/linux-generic/odp_schedule_iquery.c | 1523 ++++++++++++++++++++ platform/linux-generic/odp_schedule_sp.c | 13 +- 10 files changed, 2209 insertions(+), 3 deletions(-) create mode 100644 platform/linux-generic/include/odp_bitmap_internal.h create mode 100644 platform/linux-generic/odp_bitmap.c create mode 100644 platform/linux-generic/odp_schedule_iquery.c -- 2.7.4