<br><br><div class="gmail_quote">On Wed, Jun 6, 2012 at 7:07 PM, John McIntosh <span dir="ltr">&lt;<a href="mailto:johnmci@smalltalkconsulting.com" target="_blank">johnmci@smalltalkconsulting.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 <br>I&#39;ve resisted reponding, but way less busy tonight. <div><br></div><div>Ok, in general pre-cog as I can&#39;t quite comment about how that works. </div><div><br></div><div>After most things are killed there is really only the Morphic polling loop running. </div>

<div>What happens is it attempts about 50 times a second to wake up and service morphic steps and collect VM events and turn them into mophic events. </div><div>That of course takes CPU. </div><div><br></div><div>Now when the morphic poll loop goes to sleep by scheduling a variable length delay to met the 50 times a second, what happens is what Igor alluded to </div>

<div>some other process has to run otherwise the VM will terminate with no processes to run.</div><div><br></div><div>This process is the lowest level idle process.  </div><div>What it does is get passed a FAKE millisecond time. </div>

<div>Note in the previous century I attempted to pass how log to sleep as the Delay logic knows that... But we found out after it was pushed to the squeak change stream that there was a deadlock... Oops. </div><div><br></div>

<div>Later I realized we know in the VM when the next wakeup time is. </div><div><br></div><div>So in the VM when it calls the primitive to do idle time sleep we can grab the next known wakeup time and sleep until then. </div>

<div>or until some interrupt happens, like a file system, socket, UI input wakes us up early. </div><div>Then we usually on unix run the async file handle logic to deal with pending semaphores for sockets etc. </div><div>

That all sounds fairly rational, until you instrument and discover things like you are asked to sleep, yet a delay a millisecond or two in the past needs to be serviced... </div><div>You&#39;ll need to look at the platform support code to understand what happens, 50 times a second.. </div>

<div> </div><div><br></div><div>I think for COG there is also a high priority millisecond tick process running to update the millisecond/microsecond clock?  That spins the CPU dial too.</div></blockquote><div><br></div><div>
Yes, but only when the VM is running.  It *doesn&#39;t* need to run if the VM is blocked sleeping.  And the overhead of this watchdog thread is very low.  Don&#39;t confuse the watchdog thread with not blocking for i/o when at idle.  There&#39;s nothing to stop one disabling the watchdog during idle, provided scheduled delays break out of idle.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div><br><div class="gmail_quote">
On Wed, Jun 6, 2012 at 9:37 PM, Phil (list) <span dir="ltr">&lt;<a href="mailto:pbpublist@gmail.com" target="_blank">pbpublist@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Igor,<br>
<div><br>
On Jun 6, 2012, at 2:24 PM, Igor Stasenko wrote:<br>
<br>
&gt;<br>
&gt; just kill an idle process.<br>
&gt; but you must be sure that at any moment of time there will be some<br>
&gt; scheduled process<br>
&gt; available, otherwise VM will leave to OS, since it will unable to find<br>
&gt; anything to run<br>
&gt;<br>
<br>
</div>I&#39;m not sure I understand: I have a morph with stepping enabled (every 50ms)... shouldn&#39;t that keep the idle process from taking over?  If not (i.e. and your suggestion is the way to go), what&#39;s the recommended way to kill the idle process and how would I restart it when I no longer want maximum performance?<br>


<br>
The link to the image I posted in my reply to Bert will also display the behavior I&#39;m describing: simply moving the mouse around while the stepping is active will increase the framerate, when you stop moving the mouse it decreases.<br>


<div><br>
&gt; --<br>
&gt; Best regards,<br>
&gt; Igor Stasenko.<br>
<br>
</div>Thanks,<br>
Phil</blockquote></div><br><br clear="all"><div><br></div>-- <br>===========================================================================<br>John M. McIntosh &lt;<a href="mailto:johnmci@smalltalkconsulting.com" target="_blank">johnmci@smalltalkconsulting.com</a>&gt;<br>

Corporate Smalltalk Consulting Ltd.  <a href="http://www.smalltalkconsulting.com" target="_blank">http://www.smalltalkconsulting.com</a><div>iPhone Apps.  <a href="http://www.wikiserver.com" target="_blank">http://www.wikiserver.com</a><br>

===========================================================================<br><br><br></div><br>
</div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>