Based on analyse and design: ODP-linux Scheduler Implementation Analyse https://docs.google.com/document/d/1RlPcBoEFUQCn_HIbtRBalThIEV0LFxsP5vU0Mp-meUA/edit?usp=sharing
Experiment new scheduler called 'interests query (bitmap-based) scheduler', which can be selected with configure --enable-scheduler-iquery, supports atomic and parallel queues and can run odp_scheduling test program, next steps to support pktio in polling and ordered queues and run l2fwd. Compared to original scheduler: execution time of odp_scheduling: (8 queues per prio, x86 Xeon(R) E5-2650 v3 @ 2.30GHz) --------------------------------- cores 4 8 10 20 master 5.45s 9.3s 13.4s 65s patch 5.35s 8.3s 9.5s 29s speed up 1,01 1,12 1,41 2,24 Notes: I manually changed the odp_scheduling program to create 8 queues on highest and lowest prios (totally 16 queues per thread query). originally the odp_scheduling program creates 64 queues on highest and lowest prios (totally 128 queues per thread query). The reason is that the design is O(N) algorithm and a little slower with too much queues (but in >8 cores situation still better than original scheduler). This design should be suitable to the applications which every thread only interested in few queues and a lot of threads works. Yi He (2): linux-gen: add generic bitmaps and iterators linux-gen: add interests query (bitmap-based) scheduler platform/linux-generic/Makefile.am | 3 + .../linux-generic/include/odp_bitmap_internal.h | 319 ++++++ platform/linux-generic/include/odp_schedule_if.h | 2 + platform/linux-generic/m4/odp_schedule.m4 | 7 + platform/linux-generic/odp_bitmap.c | 315 ++++++ platform/linux-generic/odp_queue.c | 25 +- platform/linux-generic/odp_schedule.c | 6 + platform/linux-generic/odp_schedule_if.c | 6 + platform/linux-generic/odp_schedule_iquery.c | 1059 ++++++++++++++++++++ platform/linux-generic/odp_schedule_sp.c | 6 + 10 files changed, 1745 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