Minimal pharo

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

Minimal pharo

Annick Fron-3
Hi all,

I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
Would it be smaller on Linux ?
Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...
Any idea to downsize even more ?
Best regards

Annick Fron
Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Stéphane Ducasse
Annick

> I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
> Would it be smaller on Linux ?
> Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...

do you need the sources?
The minikernel image is 2 mb
Now you should also release the cache of MC and do several incantation and you can get to a more reasonable size.

> Any idea to downsize even more ?

There are more to throw away and we are always trying to componentize it.
Did you remove the tests?


> Best regards
>
> Annick Fron


Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Annick Fron-3

Le 4 janv. 2011 à 21:51, Stéphane Ducasse a écrit :

> Annick
>
>> I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
>> Would it be smaller on Linux ?
Any idea on this ?
>> Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...
>
> do you need the sources?
On Linux ? I had trouble installing Squeak on Linux.
> The minikernel image is 2 mb
> Now you should also release the cache of MC and do several incantation and you can get to a more reasonable size.

I am not too familiar with the environment, so it will me some time before I understand package loading and so on.
I don't understand why there are shell scripts together with Smalltalk scripts.
>
>> Any idea to downsize even more ?
>
> There are more to throw away and we are always trying to componentize it.
> Did you remove the tests?
Not yet
>
>
>> Best regards
>>
>> Annick Fron
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Mariano Martinez Peck
In reply to this post by Annick Fron-3
Hi Annick. I don't know which image they told you, but if you take a PharoCore 1.1.1 from here:

http://www.pharo-project.org/pharo-download/stable-core

And you evaluate:

ScriptLoader new cleanUpForRelease.

And then save and quite, the image is 6.8 MB.

Another hack I sometimes do is o put all all classes with the default category. You can still can browse and recompile the whole image.
Most production enviroments don't care about categories...they make sense when developing. (not everybody agree).
But anyway, if you then evaluate:

Smalltalk allClassesAndTraitsDo: [:each | each zapOrganization ].
Symbol compactSymbolTable.
Smalltalk garbageCollect


Then the resulted image is 6.1 mb  ;)

If you then evaluate:



"Compact all MethodDictionary instances"

| oldInstances newInstances |
oldInstances := MethodDictionary allInstances.
newInstances := oldInstances collect:
                    [ :md |   
                        (MethodDictionary new: md size)
                            compactCopyFrom: md;
                            yourself].
                       
oldInstances elementsForwardIdentityTo: newInstances.

"Different cleanUps"

TextStyle
        allSubInstancesDo: [:ts | ts
                newFontArray: (ts fontArray
                        copyFrom: 1
                        to: (2 min: ts fontArray size))].

"Clean all Monticello related stuff. You won't be able to browse packages for example"

MCWorkingCopyBrowser allInstancesDo: [:each | each flushAllCaches ].
MCWorkingCopy allInstancesDo:[:wc| SystemChangeNotifier uniqueInstance noMoreNotificationsFor: wc. wc unregister].
SystemChangeNotifier uniqueInstance noMoreNotificationsFor: MCPackageManager.
SystemChangeNotifier uniqueInstance noMoreNotificationsFor: MCWorkingCopy.

"Most application don't need sound"

SoundService default: nil.
SoundService unregister: DummySoundSystem.

SystemChangeNotifier uniqueInstance noMoreNotificationsFor: (Smalltalk at: #RecentMessageSet).

TranscriptStream newTranscript: ThreadSafeTranscript new.

ImageSegment classPool at: #RecentlyRenamedClasses put: Dictionary new.
ExternalSettings classPool at: #RegisteredClients put: Set new.

Locale classPool at: #LocaleChangeListeners put: nil.

"Clean all the changes"

ChangeSet resetCurrentToNewUnnamedChange
Set.
ChangeSet current initialize.
    ChangeSet classPool
        at: #AllChangeSets
        put: (OrderedCollection with: ChangeSet current).

Symbol rehash.

3 timesRepeat: [ Smalltalk garbageCollect. Symbol compactSymbolTable ].



You will have a 5.9 MB image :) 
is that enought?   If not, you can start unloading packages. Esteban did a lot of work with this of IPhone images.
You can ask him.

ps: I wonder if any of those scripts should be added to ScriptLoader


Cheers

Mariano


On Tue, Jan 4, 2011 at 6:48 PM, Annick Fron <[hidden email]> wrote:
Hi all,

I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
Would it be smaller on Linux ?
Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...
Any idea to downsize even more ?
Best regards

Annick Fron

Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Mariano Martinez Peck
In reply to this post by Annick Fron-3


On Tue, Jan 4, 2011 at 10:05 PM, Annick Fron <[hidden email]> wrote:

Le 4 janv. 2011 à 21:51, Stéphane Ducasse a écrit :

> Annick
>
>> I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
>> Would it be smaller on Linux ?
Any idea on this ?

I don't think so. It should be the same.
 
>> Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...
>
> do you need the sources?
On Linux ? I had trouble installing Squeak on Linux.

No, Stef wanted to said the .sources file of Pharo. Did you see that you need a Pharo1.0.sources file???
Ok, that's not needed for a deployed app since it will decompile the methods in case you browse them (you wont have the tmp names thought),

To get rid of sources, you need to evaluate Smalltalk abandonSources

 
 
> The minikernel image is 2 mb
> Now you should also release the cache of MC and do several incantation and you can get to a more reasonable size.

I am not too familiar with the environment, so it will me some time before I understand package loading and so on.
I don't understand why there are shell scripts together with Smalltalk scripts.

The shell scripts are just to shrink down the PharoCore image and build a PharoKernel from it.
You can just download the PharoKernel image (no need to run the shell scripts, this is only if you want to build the PharoKernel by your own). But be aware that PharoKernel is REALLY kernel. There is no UI, and the way to interact with it is just passing a smalltalk script file at startup.

 
>
>> Any idea to downsize even more ?
>
> There are more to throw away and we are always trying to componentize it.
> Did you remove the tests?
Not yet

As said in my previous email, #cleanUpForProduction does that.
 
Cheers

mariano

>
>
>> Best regards
>>
>> Annick Fron
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Adrian Lienhard
In reply to this post by Mariano Martinez Peck

On Jan 4, 2011, at 22:42 , Mariano Martinez Peck wrote:

> ps: I wonder if any of those scripts should be added to ScriptLoader

Yes, that would be good! Like this we can improve them and other people can contribute.

Esteban, could you share your experience with unloading packages? I assume you had to also reorganize packages to make them cleanly unloadable? If yes these changes should be integrated to improve the modularization.

Cheers,
Adrian
Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Luc Fabresse
Hi all,

 Yes, I agree with Adrian, all cleanings should be integrated.
 Perhaps in #cleanUpForProduction that already integrates some elements pointed by Mariano.

#Luc


2011/1/5 Adrian Lienhard <[hidden email]>

On Jan 4, 2011, at 22:42 , Mariano Martinez Peck wrote:

> ps: I wonder if any of those scripts should be added to ScriptLoader

Yes, that would be good! Like this we can improve them and other people can contribute.

Esteban, could you share your experience with unloading packages? I assume you had to also reorganize packages to make them cleanly unloadable? If yes these changes should be integrated to improve the modularization.

Cheers,
Adrian

Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Annick Fron-3
In reply to this post by Mariano Martinez Peck
Ok thanks

Le 4 janv. 2011 à 22:48, Mariano Martinez Peck a écrit :



On Tue, Jan 4, 2011 at 10:05 PM, Annick Fron <[hidden email]> wrote:

Le 4 janv. 2011 à 21:51, Stéphane Ducasse a écrit :

> Annick
>
>> I have now tried the minimal images indicated by Torsten and Stephane, on Windows it amounts to 9.1 Mega in memory ...
>> Would it be smaller on Linux ?
Any idea on this ?

I don't think so. It should be the same.
 
>> Yet, I still need a shoe horn, having only 8 M ram from which 1.5 is already taken by the kernel...
>
> do you need the sources?
On Linux ? I had trouble installing Squeak on Linux.

No, Stef wanted to said the .sources file of Pharo. Did you see that you need a Pharo1.0.sources file???
Ok, that's not needed for a deployed app since it will decompile the methods in case you browse them (you wont have the tmp names thought),

To get rid of sources, you need to evaluate Smalltalk abandonSources

 
 
> The minikernel image is 2 mb
> Now you should also release the cache of MC and do several incantation and you can get to a more reasonable size.

I am not too familiar with the environment, so it will me some time before I understand package loading and so on.
I don't understand why there are shell scripts together with Smalltalk scripts.

The shell scripts are just to shrink down the PharoCore image and build a PharoKernel from it.
You can just download the PharoKernel image (no need to run the shell scripts, this is only if you want to build the PharoKernel by your own). But be aware that PharoKernel is REALLY kernel. There is no UI, and the way to interact with it is just passing a smalltalk script file at startup.

 
>
>> Any idea to downsize even more ?
>
> There are more to throw away and we are always trying to componentize it.
> Did you remove the tests?
Not yet

As said in my previous email, #cleanUpForProduction does that.
 
Cheers

mariano

>
>
>> Best regards
>>
>> Annick Fron
>
>
>




Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Minimal pharo

Stéphane Ducasse
In reply to this post by Luc Fabresse
send code :)


On Jan 5, 2011, at 9:16 AM, Luc Fabresse wrote:

> Hi all,
>
>  Yes, I agree with Adrian, all cleanings should be integrated.
>  Perhaps in #cleanUpForProduction that already integrates some elements pointed by Mariano.
>
> #Luc
>
>
> 2011/1/5 Adrian Lienhard <[hidden email]>
>
> On Jan 4, 2011, at 22:42 , Mariano Martinez Peck wrote:
>
> > ps: I wonder if any of those scripts should be added to ScriptLoader
>
> Yes, that would be good! Like this we can improve them and other people can contribute.
>
> Esteban, could you share your experience with unloading packages? I assume you had to also reorganize packages to make them cleanly unloadable? If yes these changes should be integrated to improve the modularization.
>
> Cheers,
> Adrian
>


Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Annick Fron-3
In reply to this post by Luc Fabresse
Hi,

I have tried the minimal pharo, yet on Linux it opens a blank window. How is it possible to get rid of it  ?
Annick
Le 5 janv. 2011 à 09:16, Luc Fabresse a écrit :

Hi all,

 Yes, I agree with Adrian, all cleanings should be integrated.
 Perhaps in #cleanUpForProduction that already integrates some elements pointed by Mariano.

#Luc


2011/1/5 Adrian Lienhard <[hidden email]>

On Jan 4, 2011, at 22:42 , Mariano Martinez Peck wrote:

> ps: I wonder if any of those scripts should be added to ScriptLoader

Yes, that would be good! Like this we can improve them and other people can contribute.

Esteban, could you share your experience with unloading packages? I assume you had to also reorganize packages to make them cleanly unloadable? If yes these changes should be integrated to improve the modularization.

Cheers,
Adrian


Reply | Threaded
Open this post in threaded view
|

Re: Minimal pharo

Mariano Martinez Peck


On Mon, Jan 10, 2011 at 11:07 AM, Annick Fron <[hidden email]> wrote:
Hi,

I have tried the minimal pharo, yet on Linux it opens a blank window. How is it possible to get rid of it  ?

Did you manage you make it work?  if true, let us know how.
 
Annick
Le 5 janv. 2011 à 09:16, Luc Fabresse a écrit :

Hi all,

 Yes, I agree with Adrian, all cleanings should be integrated.
 Perhaps in #cleanUpForProduction that already integrates some elements pointed by Mariano.

#Luc


2011/1/5 Adrian Lienhard <[hidden email]>

On Jan 4, 2011, at 22:42 , Mariano Martinez Peck wrote:

> ps: I wonder if any of those scripts should be added to ScriptLoader

Yes, that would be good! Like this we can improve them and other people can contribute.

Esteban, could you share your experience with unloading packages? I assume you had to also reorganize packages to make them cleanly unloadable? If yes these changes should be integrated to improve the modularization.

Cheers,
Adrian