When I compile configure this without --enable-schedule-scalable the
scheduler validation test runs normally, however if I enable the new
scheduler I get this output:


...
     CUnit - A unit testing framework for C - Version 2.1-3
     http://cunit.sourceforge.net/

_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full

...lots more lines like this

_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure

Suite: Scheduler
  Test: scheduler_test_wait_time
..._fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
1..2..3..4..5.._fdserver.c:342:_odp_fdserver_deregister_fd():fd
de-registration failure
passed
  Test: scheduler_test_num_prio ...passed
  Test: scheduler_test_queue_destroy
..._fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
passed
  Test: scheduler_test_groups ..._fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:463:handle_request():FD table full
_fdserver.c:297:_odp_fdserver_register_fd():fd registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure
_fdserver.c:342:_odp_fdserver_deregister_fd():fd de-registration failure

These messages repeat throughout the test even though it "passes".
Clearly something isn't right.

On Tue, Apr 4, 2017 at 1:47 PM, Brian Brooks <brian.bro...@arm.com> wrote:
> This work derives from Ola Liljedahl's prototype [1] which introduced a
> scalable scheduler design based on primarily lock-free algorithms and
> data structures designed to decrease contention. A thread searches
> through a data structure containing only queues that are both non-empty
> and allowed to be scheduled to that thread. Strict priority scheduling is
> respected, and (W)RR scheduling may be used within queues of the same 
> priority.
> Lastly, pre-scheduling or stashing is not employed since it is optional
> functionality that can be implemented in the application.
>
> In addition to scalable ring buffers, the algorithm also uses unbounded
> concurrent queues. LL/SC and CAS variants exist in cases where absense of
> ABA problem cannot be proved, and also in cases where the compiler's atomic
> built-ins may not be lowered to the desired instruction(s). Finally, a version
> of the algorithm that uses locks is also provided.
>
> See platform/linux-generic/include/odp_config_internal.h for further build
> time configuration.
>
> Use --enable-schedule-scalable to conditionally compile this scheduler
> into the library.
>
> [1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025682.html
>
> v2:
>  - Move ARMv8 issues and other fixes into separate patches
>  - Abstract away some #ifdefs
>  - Fix some checkpatch.pl warnings
>
> Brian Brooks (14):
>   Fix native Clang build on ARMv8
>   api: queue: Add ring_size
>   Add ODP_CONFIG_QUEUE_SIZE
>   Fix a locking bug
>   test: odp_scheduling: Handle dequeueing from a concurrent queue
>   test: scheduler: Fixup calling release operations
>   Avoid shm namespace collisions and allow shm block per queue
>   Add _odp_packet_to_buf_hdr_ptr()
>   Add scalable scheduler build config
>   Add LL/SC and signaling primitives
>   Add a bitset
>   Add atomic ops for 128-bit scalars
>   Add llqueue, an unbounded concurrent queue
>   Add scalable scheduler
>
> Ola Liljedahl (2):
>   linux-generic: ring.c: use required memory orderings
>   helper: cuckootable: Specify queue ring_size
>
>  configure.ac                                       |   30 +-
>  helper/cuckootable.c                               |    1 +
>  include/odp/api/spec/queue.h                       |    5 +
>  platform/linux-generic/Makefile.am                 |   21 +-
>  .../include/odp/api/plat/schedule_types.h          |   20 +-
>  platform/linux-generic/include/odp_atomic16.h      |  214 +++
>  platform/linux-generic/include/odp_bitset.h        |  155 ++
>  .../linux-generic/include/odp_config_internal.h    |   91 +-
>  platform/linux-generic/include/odp_llqueue.h       |  285 +++
>  platform/linux-generic/include/odp_llsc.h          |  332 ++++
>  .../linux-generic/include/odp_packet_internal.h    |    3 +
>  .../linux-generic/include/odp_queue_internal.h     |  122 +-
>  platform/linux-generic/include/odp_schedule_if.h   |  166 +-
>  .../include/odp_schedule_ordered_internal.h        |  150 ++
>  platform/linux-generic/m4/odp_schedule.m4          |   55 +-
>  platform/linux-generic/odp_classification.c        |    4 +-
>  platform/linux-generic/odp_packet.c                |    5 +
>  platform/linux-generic/odp_packet_io.c             |   88 +-
>  platform/linux-generic/odp_queue.c                 |    2 +-
>  platform/linux-generic/odp_queue_scalable.c        |  883 +++++++++
>  platform/linux-generic/odp_schedule_if.c           |   36 +-
>  platform/linux-generic/odp_schedule_scalable.c     | 1922 
> ++++++++++++++++++++
>  .../linux-generic/odp_schedule_scalable_ordered.c  |  285 +++
>  platform/linux-generic/odp_traffic_mngr.c          |    7 +-
>  platform/linux-generic/pktio/loop.c                |   11 +-
>  platform/linux-generic/pktio/ring.c                |   30 +-
>  test/common_plat/performance/odp_sched_latency.c   |   68 +-
>  test/common_plat/performance/odp_scheduling.c      |   12 +-
>  .../api/classification/odp_classification_basic.c  |    8 +-
>  .../classification/odp_classification_test_pmr.c   |   42 +-
>  .../validation/api/scheduler/scheduler.c           |   11 +-
>  test/common_plat/validation/api/timer/timer.c      |    5 +-
>  32 files changed, 4922 insertions(+), 147 deletions(-)
>  create mode 100644 platform/linux-generic/include/odp_atomic16.h
>  create mode 100644 platform/linux-generic/include/odp_bitset.h
>  create mode 100644 platform/linux-generic/include/odp_llqueue.h
>  create mode 100644 platform/linux-generic/include/odp_llsc.h
>  create mode 100644 
> platform/linux-generic/include/odp_schedule_ordered_internal.h
>  create mode 100644 platform/linux-generic/odp_queue_scalable.c
>  create mode 100644 platform/linux-generic/odp_schedule_scalable.c
>  create mode 100644 platform/linux-generic/odp_schedule_scalable_ordered.c
>
> --
> 2.12.2
>

Reply via email to