Hi Petri,
thanks for explanations. I see that different schedule calls assume
different scheduling behavior which might not be possible for a HW-based
scheduler to change without re-initialization (global and/or local) if we
consider only one scheduler instance.

Alex

On 13 October 2014 11:26, Savolainen, Petri (NSN - FI/Espoo) <
[email protected]> wrote:

>
> /**
>  * Schedule one buffer
>  *
>  * Like odp_schedule(), but is quaranteed to schedule only one buffer at a
> time.
>  * Each call will perform global scheduling and will reserve one buffer per
>  * thread in maximum. When called after other schedule functions, returns
>  * locally stored buffers (if any) first, and then continues in the global
>  * scheduling mode.
>  *
>  * This function optimises priority scheduling (over throughput).
>  *
>  * User can exit the schedule loop without first calling
> odp_schedule_pause().
>  *
>  * @param from    Output parameter for the source queue (where the buffer
> was
>  *                dequeued from). Ignored if NULL.
>  * @param wait    Minimum time to wait for a buffer. Waits infinitely, if
> set to
>  *                ODP_SCHED_WAIT. Does not wait, if set to
> ODP_SCHED_NO_WAIT.
>  *                Use odp_schedule_wait_time() to convert time to other
> wait
>  *                values.
>  *
>  * @return Next highest priority buffer, or ODP_BUFFER_INVALID
>  */
> odp_buffer_t odp_schedule_one(odp_queue_t *from, uint64_t wait);
>
>
> As it says in the documentation, this schedule call will not maximize
> throughput, but
> - let user to step out from the scheduling loop easily (e.g. between every
> schedule call)
> - optimizes for QoS (by forcing global scheduling on each call)
>
>
> -Petri
>
>
>
> From: [email protected] [mailto:
> [email protected]] On Behalf Of ext Alexandru Badicioiu
> Sent: Friday, October 10, 2014 3:58 PM
> To: [email protected]
> Subject: [lng-odp] odp_example scheduling tests behavior
>
> Hi,
> I'm looking into test_schedule_one_single() test case and I noticed that
> fair behavior of the scheduler is required for this test to pass -  a core
> must receive from the scheduler exactly the same number of the frames it
> sent to the queue.
> Also an PULL model is assumed here.
>
> if (create_queue(thr, msg_pool, prio)) ----> enqueues one buffer
>                 return -1;
>
>         t1 = odp_time_get_cycles();
>
>         for (i = 0; i < QUEUE_ROUNDS; i++) {
>                 buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
>                 if (odp_queue_enq(queue, buf)) {
>                         ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
>
> Is this the assumed scheduler behavior for ODP (1.0)? As of now there is
> only one global scheduler envisioned for ODP, it may not be supported by
> all platforms or supported at the maximum level of performance.
>
> Thanks,
> Alex
>
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to