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 >>>