Esteban,

You might be on something important there.

I always found it strange what effect loading Glorp had on an image, blowing it 
up.

I can't say I understand though, best make it into an issue.

Sven

> On 10 Feb 2015, at 00:22, Esteban A. Maringolo <emaring...@gmail.com> wrote:
> 
> Just when I found a way to reduce the total size of the changes file, I
> noticed the latest versions in the repository doesn't have this issue,
> what a good way of wasting one's time learning about the guts of
> Monticello :)
> 
> But just for the record:
> The problem happened after installing into GlorpSession a
> MCMethodDefinition (#dropTables:), I logged every single method
> installation, and the point where things went bananas was after
> installing that culprit method:
> 
> After a MCMethodDefinition(dropTables):     1201686 bytes (~1.2Mb)
> After a MCMethodDefinition(dropTables:):     135419895 bytes (~135Mb)
> 
> I did a fileOut, deleted the method, and then file it in again, and
> after versioning (and reloading) the changes increased ~1Mb after
> installing Glorp.
> 
> I didn't find anything particularly suspicious about it, not in the
> source code nor in the bytecodes.
> 
> Now after running PharoChangesCondenser condense the changes file
> effectively shrinks.
> 
> Regards!
> 
> 
> Esteban A. Maringolo
> 
> 
> 2014-10-28 12:31 GMT-03:00 Sven Van Caekenberghe <s...@stfx.eu>:
>> 
>>> On 28 Oct 2014, at 14:58, Esteban A. Maringolo <emaring...@gmail.com> wrote:
>>> 
>>> 2014-10-28 5:41 GMT-03:00 Sven Van Caekenberghe <s...@stfx.eu>:
>>>> Esteban,
>>>> 
>>>> The Reddit example's CI Job 
>>>> (https://ci.inria.fr/pharo-contribution/job/Reddit/) also loads Seaside 
>>>> and Glorp (two big packages) in Pharo 3 and it too results in a 110 Mb 
>>>> image and 142 Mb changes file. After condensing, that goes to 276 Mb !
>>> 
>>>> I would say something is wrong here ;-)
>>> 
>>> Either something is wrong, or we feature it and rename
>>> PharoChangesCondenser>>#condense to PharoChangesExpander>>#expand :)
>>> 
>>>> Note that condensing changes on newly loaded code should not make much 
>>>> difference (in essence, all multiple versions of methods are reduced to 1).
>>> 
>>>> I think we should create some issues out of this.
>>> 
>>> This is true, however I find a changes of 140 megs to be MASSIVE.
>> 
>> I totally agree, this is unacceptable. However, I did some tests, and the 
>> problem is with Glorp (or any of its sub packages). I tried building both my 
>> Reddit and HP35 examples from scratch in Pharo 3 on Linux.
>> 
>> $ ./pharo reddit.image config 
>> http://smalltalkhub.com/mc/SvenVanCaekenberghe/Reddit/main 
>> ConfigurationOfReddit --install=stable
>> 
>> $ ./pharo hp35.image config 
>> http://smalltalkhub.com/mc/SvenVanCaekenberghe/HP35/main ConfigurationOfHP35 
>> --install=stable --group=Web-UI
>> 
>> Both load Seaside and some other stuff, but only Reddit loads Glorp and 
>> PostgresV2.
>> 
>> I did a condense changes on the HP35 image, the one on the Reddit image ran 
>> out of physical memory (granted is was a small machine) !
>> 
>> Here are the resulting sizes:
>> 
>> $ ls -lah
>> total 337M
>> drwxr-xr-x  4 root root 4.0K Oct 28 15:09 .
>> drwx------ 12 root root 4.0K Oct 28 12:28 ..
>> -rw-r--r--  1 root root 5.8M Oct 28 13:17 hp35.changes
>> -rw-r--r--  1 root root 5.6M Oct 28 14:38 hp35-condense-test.changes
>> -rw-r--r--  1 root root 5.8M Oct 28 14:27 hp35-condense-test.changes.bak
>> -rw-r--r--  1 root root  29M Oct 28 14:38 hp35-condense-test.image
>> -rw-r--r--  1 root root  29M Oct 28 13:17 hp35.image
>> drwxr-xr-x  2 root root 4.0K Oct 28 13:12 package-cache
>> -rwxr-xr-x  1 root root  367 Oct 28 12:29 pharo
>> -rw-rw-r--  1 root root 265K Oct 24 14:42 Pharo.changes
>> -rw-rw-r--  1 root root  21M Oct 24 14:42 Pharo.image
>> -rwxr-xr-x  1 root root  354 Oct 28 12:29 pharo-ui
>> drwxr-xr-x  3 root root 4.0K Oct 28 12:29 pharo-vm
>> -rw-r--r--  1 root root 136M Oct 28 12:48 reddit.changes
>> -rw-r--r--  1 root root 105M Oct 28 12:48 reddit.image
>> 
>> Note how the HP35 image and changes sizes are totally acceptable/normal, 
>> while the Reddit one explodes, with the difference being Glorp.
>> 
>> But I have no idea what causes this.
>> 
>> There is no way Glorp can generate 100 Mb changes, when Seaside is OK with 6 
>> Mb.
>> 
>>> I remember loading ~4000 classes in the order of 10^6 LOC in Dolphin, and
>>> changes never got half that size. Sizes were ~28/55MB image/changes.
>>> The same in VAST, any image beyond the 20MB was an alert of something
>>> being leaked.
>>> 
>>>> Hmm, we need more tests and data points, I will try on Linux command line 
>>>> later on.
>>> 
>>> I ran in it in Linux (Ubuntu) through the command line.
>>> 
>>> 
>>> Regards!
>>> 
>> 
>> 
> 


Reply via email to