Very cool!

The idle loop needs to know an estimate of when the next cyclic
will fire.  We currently look at the cy_expire field of the top
cyclic on the cpu's cyclic heap to see when the next cyclic will
fire.  Can we still use the cy_expire field of the 2 cyclics used
for callout's for this?  (e.g. when the interval is set to infinity,
will cy_expire also be set to infinity?)

I would like to see the design doc and webrev if possilble.  :-)

Thank you,
Bill



Madhavan Venkataraman wrote:
> Bill Holler wrote:
>   
>> Hi Tesla Dev,
>>
>> Where will callouts live in the tickless world?
>> Will callouts become a "one shot" cyclic?
>>
>> cyclic_fire() currently reschedules each cyclic; it does not
>> have "one shot" support.
>>
>> A prototype moves the next cyclic from one cpu to a
>> different cpu to trigger cbe_fire() with a cross call.
>> This is an alternative to using the HPET interrupt to trigger
>> cbe_fire() on a deep C-state idle cpu when the local APIC
>> is not working.  A very small amount of code had to be
>> added in cyclic_fire() to remove the "one time" cyclic from
>> the remote cpu's cyclic heap after cyclic_retire() because
>> there is no concept of a one-shot cyclic.
>>
>> Bill
>>
>>
>>
>>
>>
>> _______________________________________________
>> tesla-dev mailing list
>> tesla-dev at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>>   
>>     
> I am currently working on the Tickless Callout stuff. Infact,
> it will be code complete in a week's time. I will provide
> your team with the latest design doc and webrev if you
> are interested.
>
> In the new design, callouts are maintained in a heap. There is
> one heap corresponding to each CPU. All timeouts issued from
> a CPU get queued in the CPUs heap.
>
> There is one cyclic per CPU for realtime callouts and one
> for normal callouts. The cyclic works off of the heap and picks
> the earliest one and programs itself. A new cyclic API function
> cyclic_reprogram() has been defined to allow reprogramming of
> a cyclic. The callout cyclic handlers use this function to reprogram
> their next expire.
>
> My changes also support one-shot timers (in effect). If the interval
> for a cyclic is specified as infinity (INT64_MAX), then the cyclic
> subsystem recognizes that and programs the cyclic to infinity.
> So, the cyclic drops to the bottom of the cyclic heap and just stays there.
> Of course, this is not a perfect one-shot. But removing one-shots from
> the cyclic heap and reinserting them is just extra overhead and
> does not seem warranted at this time.
>
> If you have any questions and/or would like more information, let me know.
> BTW, I am working with Eric Saxe and Sasha on this one. They are reviewers
> for the callout stuff.
>
> Madhavan
> _______________________________________________
> tesla-dev mailing list
> tesla-dev at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>   


Reply via email to