This is not going to get as much use before Release as I had hoped, so I
refactored it to be able to easily switch between the existing and new code
by making two schedulers...
* DelayMillisecondScheduler - essentially the existing code
* DelayMicrosecondScheduler - based off new primitive
which are switchable on the fly via a System Setting.

To try to make it easier to review, I've separated changes into three
stages:
* SLICE.10 accumulates changes the Delay class to add some better semantics
to instance variables and method renames
* SLICE.14 accumulates changes to split DelayScheduler into two subclasses
for the two different schedulers (use the incoming code in the merge
conflict)
* SLICE.17 accumulates changes to modify DelayMicrosecondScheduler, plus a
couple of polishing things.

I've added some review notes to the issue
https://pharo.fogbugz.com/default.asp?14353

fyi, Tomorrow I start a new job at Buewaters Power Station [1] (2 x 208MW
generators).  They've been without an electrical engineer for three months
leading up to their annual outage in five weeks, so I'm probably flat there
playing catch-up for the next two months.  Today (GMT+8) would be a really
good time to engage me with feedback and queries.  I'll try to hang out on
IRC as much as possible to speed up discussion.

[1] http://www.bluewatersps.com.au/

cheers -ben



On Mon, Mar 2, 2015 at 3:09 AM, stepharo <[email protected]> wrote:

Please help us to push ben code.



-------- Message transféré --------
Sujet : Re: [Pharo-dev] Super fast delay
Date : Wed, 25 Feb 2015 02:00:25 +0800
De : Ben Coman <[email protected]>
Répondre à : Pharo Development List <[email protected]>
Pour : Pharo Development List <[email protected]>


I've updated this fix for build 40504.  The following slice is read for
review.
SLICE-Issue-14353-Delay-refactoring-part-2---change-from-milliseconds-to-microseconds-BenComan.6

Even if you do not feel up to reviewing the code, it would be good for a
few people to merge this to get a broad sample of symptoms fixed or caused.

1. Open up Monticello and get ready to load the above slice from
Pharo4Inbox repository.
2. In a workspace, do "Delay stopTimerEventLoop".   Ignore the
#intercyclePause: message that stream by.
3. Merge slice.
4. In a workspace, do "Delay startTimerEventLoop".  The stream of
#interCyclePause message should fade.
5. Operate as you normally would. Test some cases that previously caused an
error.

cheers -ben

On Thu, Feb 19, 2015 at 11:17 PM, Ben Coman <[email protected]> wrote:


On Thu, Feb 19, 2015 at 9:50 PM, Ben Coman <[email protected]> wrote:


On Mon, Feb 16, 2015 at 4:01 PM, Holger Hans Peter Freyther <
[email protected]> wrote:
On Thu, Oct 30, 2014 at 06:32:48PM -0400, stepharo wrote:

Good Morning Ben, Stef,

> We really need people to have a look at the code of Ben.

I downloaded a Pharo-4 image today and executed:

To clarify.  The fix is not yet in Pharo-4.


time pharo --nodisplay --headless ./Pharo-40490.image  eval "(Delay
forSeconds: 5) wait"
a Delay(5000 msecs)

real    0m1.254s
user    0m1.192s
sys     0m0.060s


So the first delay doesn't appear to wait the five seconds. I
would like to work on kqueue/epoll and remove polling and it
looks this involves code with Delay as well. I wonder if you
could provide an overview of what needs to be done and what is
done?

The pre-requisite issue 14942 is waiting for review. It really should take
only 10 minutes to review...
1. In latest Pharo 4, inspect "Delay newCodeEnabled" and observe that it is
"true".
2. Open the Pharo4Inbox and filter on 14942.
3. Select newest slice and <Merge>.
4. Observe the diff shows all "false" parts removed (it doesn't really get
much simpler than this to review).
5. Click <merge> to finish.
6. Observe the image continues to run smoothly.
7. Report your observations on https://pharo.fogbugz.com/default.asp?14942

btw, after the cleanup done by Issue 14942, Issue 14966 can delete ten
class variables from Delay.
When 14942 is integrated, can 14966 be integrated very soon after that.  I
am basing the change of Delay to microsecond delay off 14966.
cheers -ben




I need to refresh myself on the fix I did back in 2-Dec.  Its languished
while some support infrastructure was added to help the system ride-through
the change.

cheers -ben

Reply via email to