Environment is Ubuntu 16.10.

On Wed, Apr 5, 2017 at 7:03 AM, Bill Fischofer
<bill.fischo...@linaro.org> wrote:
> This is running on my desktop x86:
>
> ./bootstrap
> ./configure --enable-schedule-scalable --enable-cunit-support
> make
> cd test/common_plat/validation/api/scheduler
> ./scheduler_main
>
> On Tue, Apr 4, 2017 at 10:24 PM, Honnappa Nagarahalli
> <honnappa.nagaraha...@linaro.org> wrote:
>> On 4 April 2017 at 16:12, Bill Fischofer <bill.fischo...@linaro.org> wrote:
>>> 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.
>>
>> We have done considerable amount of testing on x86 as well as ARM with
>> different schedulers.
>> Can you provide more details?
>> What is the config command you used?
>> What platform (x86 vs ARM)?
>> I assume you are running 'make check'.
>>
>>>
>>> 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