[Vm-dev] OS X Mavericks & cog tickers
Igor Stasenko
siguctua at gmail.com
Thu Oct 24 23:48:56 UTC 2013
On 25 October 2013 01:39, John McIntosh <johnmci at smalltalkconsulting.com>wrote:
>
> After you solve aioPoll()
>
> You could consider waiting in the morphic polling loop until a VM UI event
> interrupt comes in, or to when you need to wake up to service your Morphic
> responsibilities.
>
>
you always know when image wants to wake up - it is a delay semaphore.
basically , when image sets new Delay, it says to VM: wake me up at this
moment.
This is i think the only thing, of course aside the async i/o & UI events.
I don't know how well different platforms support that,
but at least on windows, a following can be realized without the problem:
self primPleaseWakeMeUpWhenSomethingHappensButNotForNoReason
instead of:
[ self sleep:1000 "or wakeup if there something happens" ] repeat.
means, that OS Kernel can handle that and it halts CPU for your process
until hardware interrupt arrives.
> On Thu, Oct 24, 2013 at 7:34 PM, Igor Stasenko <siguctua at gmail.com> wrote:
>
>>
>>
>>
>>
>> On 25 October 2013 01:18, John McIntosh <johnmci at smalltalkconsulting.com>wrote:
>>
>>>
>>> Well let me reflect.
>>> Nothing has changed, the VM energy sapping field is the same as
>>> yesterday, just more evident.
>>>
>>> I wasn't able to determine what code base is used, but if I go back 5
>>> or 10 years.
>>>
>>> (a) The morphic event polling cycle runs 50 times a second. One could
>>> write some timer consolidation code there to consider when do I have to
>>> wake up and paint all those morphs? No C/Objective-C/assembler/fortran
>>> required...
>>>
>>> (b) Maybe the VMs are event driven now and Morphic does not need to poll
>>> 50 times a second?
>>>
>>> (c) The BSD Unix socket system requires polling of some form. But see
>>> work by Craig 10-15 back on "Flow"
>>>
>>> (d) When all the Smalltalk Processes settle, the dispatcher runs the
>>> lowest priority task which calls relinquishProcessorForMicroseconds
>>> with a bogus value.
>>>
>>>
>> (e) Cog uses heartbeat timer to interrupt interpreter at regular time
>> periods
>> what can be done, i think it to suppress heartbeat, during
>> relinquishProcessorForMicroseconds execution.
>> but that won't buy much, unless we increase the time period to sleep to
>> be times larger than heartbeat cycle (both are 1ms).
>>
>> sqMacV2Time.c:
>>
>> sqInt ioRelinquishProcessorForMicroseconds(sqInt microSeconds) {
>> //API Documented
>> /* This operation is platform dependent. */
>> #pragma unused(microSeconds)
>>
>> sqInt realTimeToWait,now,next;
>> extern sqInt getNextWakeupTick(void); //This is a VM
>> Callback
>> extern sqInt setInterruptCheckCounter(sqInt value); //This is a VM
>> Callback
>>
>> setInterruptCheckCounter(0);
>> now = ioMSecs();
>> next = getNextWakeupTick();
>>
>> /*BUG??? what if clock wraps? */
>>
>> if (next <= now)
>> if (next == 0)
>> realTimeToWait = 16;
>> else {
>> return 0;
>> }
>> else
>> realTimeToWait = next - now;
>>
>> aioSleep((int) realTimeToWait*1000);
>> return 0;
>> }
>>
>>
>> The real solution would be to not fall asleep,
>> but just put process into waitable state on 'wake up semaphore'
>> which then signaled if there's some i/o or timeout.
>>
>>
>>>
>>>
>>> On Thu, Oct 24, 2013 at 6:21 PM, tim Rowledge <tim at rowledge.org> wrote:
>>>
>>>>
>>>> Looking through some of the low-level changes in Mavericks I noticed
>>>> stuff about timer consolidation. I *think* that it is something that you
>>>> can offer to allow, rather than something done unto you code, but almost
>>>> certainly it will have some sort of impact on the heartbeat ticker type of
>>>> code used in stackvm/cog. Where is a skilled Mac vm maintainer when you
>>>> need one?
>>>>
>>>> tim
>>>> --
>>>> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
>>>> "bOtHeR" said Pooh, mistaking the LSD tablet for aspirin
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> ===========================================================================
>>> John M. McIntosh <johnmci at smalltalkconsulting.com>
>>> Corporate Smalltalk Consulting Ltd. Twitter: squeaker68882
>>>
>>> ===========================================================================
>>>
>>>
>>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>>
>
>
> --
> ===========================================================================
> John M. McIntosh <johnmci at smalltalkconsulting.com>
> Corporate Smalltalk Consulting Ltd. Twitter: squeaker68882
> ===========================================================================
>
>
>
--
Best regards,
Igor Stasenko.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20131025/9a2d03cd/attachment.htm
More information about the Vm-dev
mailing list