> On 20 ene 2016, at 9:08 a.m., Christophe Demarey 
> <christophe.dema...@inria.fr> wrote:
> 
> Hi Pavel,
> 
> Le 19 janv. 2016 à 19:53, Pavel Krivanek a écrit :
> 
>> Hi,
>> 
>> amazing! Do you have any idea how to speed up it? The bootstrap process is 
>> now running on my machine about one and half hour and it is still far from 
>> finish. 
> 
> The process is indeed far too long (takes around 10 hours) on the CI server.
> Reasons are:
> - we use a stack interpreter VM
> - we modified it and is a bit slower than a classical stack VM

Not quite so. My measurements did not show that… But I can understand the 
feeling as the StackVM is in general half as fast as the CogVM, which is the VM 
we are used to use since years.

> - we use AST interpretation to build the bootstrap and it is very slow. 
> Guille already did some speed improvements by avoiding to interpret loops by 
> example.
> 
> I did not yet spend time on this point because I first wanted to have 
> something working.
> Definitely, this problem will be tackled when we will put in production the 
> bootstrap.

We should really measure because I see three main aspects:

1) class creation (executes the class builder using AST interpretation)
2) method compilation
3) method installation  (using AST interpretation to respect trait copying)

My feeling (from what I observe only) is that most of the time is consumed in 
2) and 3), and that specially it is in 3).

And I particularly want to see how the growing of collections perform.

> 
> Cheers,
> Christophe
> 
> 
>> Cheers,
>> -- Pavel
>> 
>> 2016-01-19 15:29 GMT+01:00 Christophe Demarey <christophe.dema...@inria.fr 
>> <mailto:christophe.dema...@inria.fr>>:
>> Hi all,
>> 
>> In case you do not know, we work on bootstrapping Pharo, i.e. create a Pharo 
>> image from sources, not based on a previous image (well, we use a pharo 
>> image to produce it but no code / state from it).
>> 
>> This process will allow to define a minimal Pharo kernel (currently 52 
>> packages but we could have it far smaller) and to modularize the whole image 
>> (currently packages have too much dependencies on packages already loaded 
>> into the image).
>> The bootstrap process also allows to write down the recipe to initialize a 
>> new image from scratch (some code is missing in the image or is wrong). In 
>> addition, I think we will clean a lot of historical objects that are not 
>> used anymore.
>> 
>> With the amazing work done by Guillermo Polito during his Phd (around 
>> Espell, Oz): https://guillep.github.io/files/publications/Poli15Thesis.pdf 
>> <https://guillep.github.io/files/publications/Poli15Thesis.pdf>, we 
>> succeeded to get a first prototype of a bootstraped Pharo 5 image (from 
>> 5.392).
>> This prototype is able to run an eval command line handler and to log output 
>> / errors. Not all classes are yet initialized and you cannot yet save / 
>> restart this image but it is a big step forward.
>> It is a 4 mb image (could be half the size without unicode data). You can 
>> download it at: 
>> http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-bootstrap.zip
>>  
>> <http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-bootstrap.zip>.
>> 
>> Next steps are to have a bootstrapped image fully working, then to load 
>> packages on top of it (like network, sunit) to produce a minimal image.
>> Then, we need to implement an Oz VM on top of Spur.
>> After that, we need to work on a reliable way to build the bootstrap (not 
>> too sensitive to changes in the image).
>> 
>> Christophe.
>> 
>> -------
>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo 
>> bootstrap.image --no-default-preferences eval "1 + 1"
>> 2
>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo 
>> bootstrap.image --no-default-preferences eval "'a' , 'b'"
>> 'ab'
>> demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo 
>> bootstrap.image --no-default-preferences eval "1 / 0"
>> ZeroDivide
>> SmallInteger>>/
>> UndefinedObject>>DoIt
>> OpalCompiler>>evaluate
>> OpalCompiler(AbstractCompiler)>>evaluate:
>> SmalltalkImage>>evaluate:
>> 
>> EvaluateCommandLineHandler>>no (source is Undeclared) 
>> no source in EvaluateCommandLineHandler>>evaluate: in Block: no source
>> BlockClosure>>on:do:
>> EvaluateCommandLineHandler>>evaluate:
>> EvaluateCommandLineHandler>>evaluateArguments
>> EvaluateCommandLineHandler>>activate
>> EvaluateCommandLineHandler class(CommandLineHandler class)>>activateWith:
>> 
>> BasicCommandLineHandler>>no (source is Undeclared) 
>> no source in 
>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: in 
>> Block: no source
>> BlockClosure>>on:do:
>> PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand:
>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand
>> PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument:
>> 
>> BasicCommandLineHandler>>no (source is Undeclared) 
>> no source in PharoCommandLineHandler(BasicCommandLineHandler)>>activate in 
>> Block: no source
>> BlockClosure>>on:do:
>> PharoCommandLineHandler(BasicCommandLineHandler)>>activate
>> PharoCommandLineHandler>>activate
>> PharoCommandLineHandler class(CommandLineHandler class)>>activateWith:
>> 
>> PharoCommandLineHandler class>>no (source is Undeclared) 
>> no source in PharoCommandLineHandler class>>activateWith: in Block: no source
>> NonInteractiveUIManager(UIManager)>>defer:
>> PharoCommandLineHandler class>>activateWith:
>> no source in BasicCommandLineHandler>>activateSubCommand: in Block: no source
>> BlockClosure>>on:do:
>> BasicCommandLineHandler>>activateSubCommand:
>> BasicCommandLineHandler>>handleSubcommand
>> BasicCommandLineHandler>>handleArgument:
>> no source in BasicCommandLineHandler>>activate in Block: no source
>> 
>> SmallInteger>>no (source is Undeclared) 
>> 
>> UndefinedObject>>no (source is Undeclared) 
>> 
>> AbstractCompiler>>no (source is Undeclared) 
>> 
>> SmalltalkImage>>no (source is Undeclared) 
>> 
>> BlockClosure>>no (source is Undeclared) 
>> 
>> EvaluateCommandLineHandler>>no (source is Undeclared) 
>> 
>> EvaluateCommandLineHandler>>no (source is Undeclared) 
>> 
>> CommandLineHandler class>>no (source is Undeclared) 
>> 
>> BasicCommandLineHandler>>no (source is Undeclared) 
>> 
>> BasicCommandLineHandler>>no (source is Undeclared) 
>> 
>> PharoCommandLineHandler>>no (source is Undeclared) 
>> 
>> UIManager>>no (source is Undeclared) 
>> 
>> UndefinedObject>>no (source is Undeclared) 
>> 
>> CommandLineUIManager>>no (source is Undeclared) 
>> 
>> SmalltalkImage>>no (source is Undeclared) 
>> 
>> DelayMicrosecondScheduler>>no (source is Undeclared) 
>> 
>> BlockClosure>>no (source is Undeclared) 
>> 
>> SmalltalkImage>>no (source is Undeclared) 
>> 
>> WeakArray class>>no (source is Undeclared) 
>> 
>> 
>> ps: source cannot be displayed because there is no formatter available in 
>> the bootstrap
>> 
>> 
> 

Reply via email to