Norbert Hartl wrote:
I have a report that it doesn't work on a linux desktop either. So at least there is one case where it does not work in a non-virtualized environment. Maybe interesting:
root@2d-misc:/opt/mock-server# time pharo-vm-nox ./Pharo.image eval "(Delay forSeconds: 5) wait. (Delay forSeconds: 10) wait" a Delay(10000 msecs)
real 0m10.185s user 0m0.268s sys 0m0.040s
Norbert
btw, coincidently I am working on refactoring Delay in two respects... Part 1. Delay class-side timer-priority-process methods are moved to instance side of new class DelayScheduler. Nominally this is to facilitate adding tests for Delay, and provide alternative forms of delay scheduling (e.g. mutex, semaphore, waitfree, spinlock). https://pharo.fogbugz.com/default.asp?14261 Part 2. change interthread synchronsiation for delay scheduling from Mutex to Semaphore https://pharo.fogbugz.com/default.asp?14344 Hopefully have Part2 done in a couple of days and it will be interesting to see whether this has any beneficial effect here. In the meantime, Part 1 may help you experiment without interfering with the normal operation of the system. In any case I'd be grateful for some feedback on Part 1. This effectively hasn't changed any functionality or the order of executing code. Its only moved code between a few methods. It would be great to pair up live with someone interested in it. cheers -ben
Am 28.10.2014 um 22:56 schrieb Sven Van Caekenberghe <sven@stfx.eu>:
I am pretty sure that it is related to virtual hardware, it seems to work reliably on my mac:
prometheus:pharo4 sven$ ./pharo Pharo.image printVersion [version] 4.0 #40322
prometheus:pharo4 sven$ time ./pharo Pharo.image eval '5 seconds asDelay wait' a Delay(5000 msecs)
real 0m5.504s user 0m0.491s sys 0m0.440s
prometheus:pharo4 sven$ time ./pharo Pharo.image eval '5 seconds asDelay wait' a Delay(5000 msecs)
real 0m5.539s user 0m0.408s sys 0m0.166s
prometheus:pharo4 sven$ time ./pharo Pharo.image eval '5 seconds asDelay wait' a Delay(5000 msecs)
real 0m6.022s user 0m0.647s sys 0m0.442s
prometheus:pharo4 sven$ time ./pharo Pharo.image eval '5 seconds asDelay wait' a Delay(5000 msecs)
real 0m5.539s user 0m0.518s sys 0m0.440s
But how it can work so completely bogus on virtual hardware beats me.
On 28 Oct 2014, at 20:21, phil@highoctane.be wrote:
VMWare Workstation 10 on Win8.1 Pro PharoVM compiled on CentOS6.5
[philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.473s <-- not much... user 0m0.285s sys 0m0.140s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.360s <-- not much either user 0m0.257s sys 0m0.095s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.374s user 0m0.269s sys 0m0.103s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait'
a Delay(5000 msecs)
real 0m5.324s user 0m0.338s sys 0m0.067s [philippeback@CENTOSDEV zeroconf-centos]$ [philippeback@CENTOSDEV zeroconf-centos]$ ^C <--- FROZEN!!!!
[philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.468s user 0m0.287s sys 0m0.171s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.639s user 0m0.281s sys 0m0.233s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.331s user 0m0.260s sys 0m0.066s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.493s user 0m0.265s sys 0m0.210s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.343s user 0m0.258s sys 0m0.073s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.352s user 0m0.314s sys 0m0.035s [philippeback@CENTOSDEV zeroconf-centos]$ time ./pharo-vm/pharo -vm-display-null Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.303s user 0m0.266s sys 0m0.032s
Completely un[reliable|predictable]...
Phil
# time ./pharo Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m0.696s user 0m0.580s sys 0m0.060s
# time ./pharo Pharo.image eval '5 asSeconds asDelay wait' a Delay(5000 msecs)
real 0m5.755s user 0m0.812s sys 0m0.080s
Weird !
Must have something todo with virtual hardware ...
On 28 Oct 2014, at 18:24, Norbert Hartl <norbert@hartl.name> wrote:
I just recognized that Delay is working in a strange way on my linux box
$ time pharo-vm-nox ./Pharo.image eval "(Delay forSeconds: 5) wait" a Delay(5000 msecs)
real 0m0.158s user 0m0.136s sys 0m0.020s
I use the vm from the ppa. What do you get when you execute it?
Norbert