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