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

Reply via email to