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