HydraVM now truly event-driven, with more clean design

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

HydraVM now truly event-driven, with more clean design

Igor Stasenko
I'm just done with refactoring, as was planned in
http://lists.squeakfoundation.org/pipermail/vm-dev/2008-February/001795.html.
I was surprised that VM runs smoothly at first successful build after
changing lot of stuff! :)

Here the set of changes i done:
---------
* refactor signaling low space semaphore
* refactor signaling interrupt semaphore
* refactor signaling finalization semaphore
* remove interruptPending var
* remove get/setInterruptPending methods

* set system timer to post ioProcessEvents event every 200 ms

* deal with primitiveSignalAtMilliseconds primitive
* refactor signaling timer semaphore
* remove lastTick var
* remove nextPollTick var
* remove nextWakeupTick var
* remove get/setNextWakeupTick methods

* change internalQuickCheckForInterrupts
* remove quickCheckForInterrupts, leave only internalQuickCheckForInterrupts

* remove checkForInterrupts method
* interruptChecksEveryNms totally ignored (no need in interrupt if
there no any event!)
* remove interruptCheckForced method from use
* remove getInterruptCheckCounter method
* remove setInterruptCheckCounter: method
* remove interruptCheckCounter var
* forceInterruptCheck method is no-op now
* remove interruptCheckCounterFeedBackReset var

---------

1 tinyBenchmarks runs on my box:

squeak VM:
'200312989 bytecodes/sec; 5879195 sends/sec'
'200469851 bytecodes/sec; 6178049 sends/sec'
'200000000 bytecodes/sec; 6183469 sends/sec'
'200156372 bytecodes/sec; 6151095 sends/sec'

HydraVM before refactoring of checkForInterrupts()

'194973343 bytecodes/sec; 5372831 sends/sec'
'195121951 bytecodes/sec; 5372831 sends/sec'
'195121951 bytecodes/sec; 5368739 sends/sec'
'194973343 bytecodes/sec; 5126658 sends/sec'

HydraVM after refactoring of checkForInterrupts()
'197378565 bytecodes/sec; 5183202 sends/sec'
'195121951 bytecodes/sec; 5126658 sends/sec'
'197378565 bytecodes/sec; 5308098 sends/sec'
'197530864 bytecodes/sec; 5368739 sends/sec'

It's strange that
[ 3000 milliSeconds asDelay wait ] timeToRun
prints 2500 ( 4000 milliSeconds will print 3500, seems somewhere there
is a constant subtraction placed ?)

Is there are some tests for how precise Delays working?

Okay, now need to do some testing, and then i will release the update.

--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Igor Stasenko
Some additional benchmarking printout:

[1 tinyBenchmarks ] timeToRun

squeak VM:
 5240
 5235
 5243
 5249

Hydra VM (before refactoring)
  5797
  5797
  5937
  5938

Hydra VM (after refactoring)
  5688
  5703
  5703

So, there is definitely a speed boost with new changes!

--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Klaus D. Witzel
On Sun, 17 Feb 2008 14:53:18 +0100, Igor Stasenko wrote:

> Some additional benchmarking printout:

This looks very good indeed :)

BTW: did you test Hydra VM in a Web browser,

- http://wiki.squeak.org/squeak/1865

> [1 tinyBenchmarks ] timeToRun
>
> squeak VM:
>  5240
>  5235
>  5243
>  5249
>
> Hydra VM (before refactoring)
>   5797
>   5797
>   5937
>   5938
>
> Hydra VM (after refactoring)
>   5688
>   5703
>   5703
>
> So, there is definitely a speed boost with new changes!
>



Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Michael van der Gulik-2
In reply to this post by Igor Stasenko


On Feb 18, 2008 2:31 AM, Igor Stasenko <[hidden email]> wrote:
I'm just done with refactoring, as was planned in
http://lists.squeakfoundation.org/pipermail/vm-dev/2008-February/001795.html.
I was surprised that VM runs smoothly at first successful build after
changing lot of stuff! :)



Could I get you to run a more realistic benchmark, such as a compilation?

I might be coding on Squeak later tonight so I could write up some code for you.

Gulik.


--
http://people.squeakfoundation.org/person/mikevdg
http://gulik.pbwiki.com/

Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Igor Stasenko
On 17/02/2008, Michael van der Gulik <[hidden email]> wrote:

>
>
> On Feb 18, 2008 2:31 AM, Igor Stasenko <[hidden email]> wrote:
> > I'm just done with refactoring, as was planned in
> >
> http://lists.squeakfoundation.org/pipermail/vm-dev/2008-February/001795.html.
> > I was surprised that VM runs smoothly at first successful build after
> > changing lot of stuff! :)
> >
> >
>
>
> Could I get you to run a more realistic benchmark, such as a compilation?
>
> I might be coding on Squeak later tonight so I could write up some code for
> you.
>
no problem

> Gulik.
>
>
> --
> http://people.squeakfoundation.org/person/mikevdg
> http://gulik.pbwiki.com/
>
>
>


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

re: HydraVM now truly event-driven, with more clean design

ccrraaiigg
In reply to this post by Igor Stasenko

Hi Igor--

      Cool! Does the simulator work?


      thanks,

-C

--
Craig Latta
improvisational musical informaticist
www.netjam.org
Smalltalkers do: [:it | All with: Class, (And love: it)]


Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Igor Stasenko
On 17/02/2008, Craig Latta <[hidden email]> wrote:
>
> Hi Igor--
>
>       Cool! Does the simulator work?
>

No, simulator code is broken.
And answering to Klaus question: no, i never tried to build it as
browser plugin.

I haven't time on that :)


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

ccrraaiigg

 > No, simulator code is broken.

      Because of something you did?


      thanks again,

-C

--
Craig Latta
improvisational musical informaticist
www.netjam.org
Smalltalkers do: [:it | All with: Class, (And love: it)]


Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Igor Stasenko
On 18/02/2008, Craig Latta <[hidden email]> wrote:
>
>  > No, simulator code is broken.
>
>       Because of something you did?
>
Yes, because of objectification.
Instance variables of Interpreter now having different meaning in C.
Some of them are kept global, while most of them kept on a
per-instance basis.
To make simulator working correctly it would require to move all
global vars into a separate class.
Or move globals to class variables and move current class vars to
shared pool, and make appropriate changes in CodeGenerator.

>
>       thanks again,
>
> -C
>
> --
> Craig Latta
> improvisational musical informaticist
> www.netjam.org
> Smalltalkers do: [:it | All with: Class, (And love: it)]
>
>
>


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: HydraVM now truly event-driven, with more clean design

Igor Stasenko
In reply to this post by Igor Stasenko
On 17/02/2008, Igor Stasenko <[hidden email]> wrote:

> HydraVM after refactoring of checkForInterrupts()
> '197378565 bytecodes/sec; 5183202 sends/sec'
> '195121951 bytecodes/sec; 5126658 sends/sec'
> '197378565 bytecodes/sec; 5308098 sends/sec'
> '197530864 bytecodes/sec; 5368739 sends/sec'
>
> It's strange that
> [ 3000 milliSeconds asDelay wait ] timeToRun
> prints 2500 ( 4000 milliSeconds will print 3500, seems somewhere there
> is a constant subtraction placed ?)
>
> Is there are some tests for how precise Delays working?
>
> Okay, now need to do some testing, and then i will release the update.
>

Fixed that, now benchmarks looking much less diverse (which in own
turn means that timing now much more accurate), also send/sec shows a
small boost.

1 tinyBenchmarks
 '197378565 bytecodes/sec; 5434969 sends/sec'
 '197378565 bytecodes/sec; 5502853 sends/sec'
 '197378565 bytecodes/sec; 5434969 sends/sec'
 '197378565 bytecodes/sec; 5502853 sends/sec'

--
Best regards,
Igor Stasenko AKA sig.