Speeding up Pharo 1.1

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

Re: Speeding up Pharo 1.1

Igor Stasenko
2010/10/19 Levente Uzonyi <[hidden email]>:

> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>
>> 2010/10/18 Igor Stasenko <[hidden email]>:
>>>
>>> On 18 October 2010 23:18, Nicolas Cellier
>>> <[hidden email]> wrote:
>>>>
>>>> 2010/10/17 Levente Uzonyi <[hidden email]>:
>>>>>
>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>
>>>>>> Hi list,
>>>>>>
>>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>>> that the performance is degrading fast. UI tasks takes several seconds
>>>>>> to react to my keyboard.
>>>>>
>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>> Please
>>>>> send us the result of the following expression:
>>>>>
>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>        select: [ :each | each notNil ]
>>>>>        thenCollect: [ :each | each class -> each size ]
>>>>>
>>>>
>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>> a very unresponsive image...
>>>>
>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>       select: [ :each | each notNil ]
>>>>       thenCollect: [ :each | each class -> each size]
>>>> ->
>>>> {(WeakIdentityKeyDictionary->22370).
>>>
>>> This is an MC cache. And major reason of image slowdown.
>>>
>>
>> Levente did this simplification in trunk:
>>
>> cachedDefinitions
>>        ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary new
>> ]
>>
>> It would be worth a try in Pharo.
>
> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
> they're not registered to the finalization process. So this won't work as
> long as that's not fixed.
>

Huh? Can you provide a code to show it? Test case please?


>
> Levente
>
>>
>> Nicolas
>>
>>>> (WeakRegistry->0).
>>>> (WeakRegistry->0). (WeakRegistry->0). (WeakRegistry->2)}
>>>>
>>>> I tried to inspect it 5 minutes ago, but hey, answer in another email...
>>>> Ah, OK, cmd+shift+. just worked. I had to interrupt
>>>> #finalizationProcess itself finally...
>>>> Oh inspect is sorting the keys... unusable.
>>>> So what's in the array ? Things like
>>>>
>>>> (ScriptLoader>>#update12125 "a CompiledMethod(0)")->a
>>>> MCMethodDefinition(ScriptLoader>>update12125)
>>>> (PragmaCollector>>#release "a CompiledMethod(964689920)")->a
>>>> MCMethodDefinition(PragmaCollector>>release)
>>>> (Float>>#arcSin "a CompiledMethod(358088704)")->a
>>>> MCMethodDefinition(Float>>arcSin)
>>>>
>>>> I don't understand yet, but I begin to gather clues why updating pharo
>>>> goes so badly...
>>>>
>>>> Nicolas
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Henrik Sperre Johansen
  On 18.10.2010 23:21, Igor Stasenko wrote:

> 2010/10/19 Levente Uzonyi<[hidden email]>:
>> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>>
>>> 2010/10/18 Igor Stasenko<[hidden email]>:
>>>> On 18 October 2010 23:18, Nicolas Cellier
>>>> <[hidden email]>  wrote:
>>>>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>>
>>>>>>> Hi list,
>>>>>>>
>>>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>>>> that the performance is degrading fast. UI tasks takes several seconds
>>>>>>> to react to my keyboard.
>>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>>> Please
>>>>>> send us the result of the following expression:
>>>>>>
>>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>>         select: [ :each | each notNil ]
>>>>>>         thenCollect: [ :each | each class ->  each size ]
>>>>>>
>>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>>> a very unresponsive image...
>>>>>
>>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>>        select: [ :each | each notNil ]
>>>>>        thenCollect: [ :each | each class ->  each size]
>>>>> ->
>>>>> {(WeakIdentityKeyDictionary->22370).
>>>> This is an MC cache. And major reason of image slowdown.
>>>>
>>> Levente did this simplification in trunk:
>>>
>>> cachedDefinitions
>>>         ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary new
>>> ]
>>>
>>> It would be worth a try in Pharo.
>> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
>> they're not registered to the finalization process. So this won't work as
>> long as that's not fixed.
>>
> Huh? Can you provide a code to show it? Test case please?
>
Just add lots of objects which will be GC'd to an unregistered
WeakKeyDictionary.
After X objects are gc'd, you'd still have X nil-keyed associations in
the dictionary.
Add Y objects, gc those, and you have X+Y nil-keys in the dict.
(If dict grown/rehashed, all nicely placed index 1 onwards)

Cheers,
Henry

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Igor Stasenko
On 19 October 2010 00:30, Henrik Sperre Johansen
<[hidden email]> wrote:

>  On 18.10.2010 23:21, Igor Stasenko wrote:
>>
>> 2010/10/19 Levente Uzonyi<[hidden email]>:
>>>
>>> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>>>
>>>> 2010/10/18 Igor Stasenko<[hidden email]>:
>>>>>
>>>>> On 18 October 2010 23:18, Nicolas Cellier
>>>>> <[hidden email]>  wrote:
>>>>>>
>>>>>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>>>>>>
>>>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>>>
>>>>>>>> Hi list,
>>>>>>>>
>>>>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>>>>> that the performance is degrading fast. UI tasks takes several
>>>>>>>> seconds
>>>>>>>> to react to my keyboard.
>>>>>>>
>>>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>>>> Please
>>>>>>> send us the result of the following expression:
>>>>>>>
>>>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>>>        select: [ :each | each notNil ]
>>>>>>>        thenCollect: [ :each | each class ->  each size ]
>>>>>>>
>>>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>>>> a very unresponsive image...
>>>>>>
>>>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>>>       select: [ :each | each notNil ]
>>>>>>       thenCollect: [ :each | each class ->  each size]
>>>>>> ->
>>>>>> {(WeakIdentityKeyDictionary->22370).
>>>>>
>>>>> This is an MC cache. And major reason of image slowdown.
>>>>>
>>>> Levente did this simplification in trunk:
>>>>
>>>> cachedDefinitions
>>>>        ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary
>>>> new
>>>> ]
>>>>
>>>> It would be worth a try in Pharo.
>>>
>>> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
>>> they're not registered to the finalization process. So this won't work as
>>> long as that's not fixed.
>>>
>> Huh? Can you provide a code to show it? Test case please?
>>
> Just add lots of objects which will be GC'd to an unregistered
> WeakKeyDictionary.
> After X objects are gc'd, you'd still have X nil-keyed associations in the
> dictionary.
> Add Y objects, gc those, and you have X+Y nil-keys in the dict.
> (If dict grown/rehashed, all nicely placed index 1 onwards)
>

it doesn't sounds like incorrect behavior (i.e. pruning a nil-ed keys
before #finalizeValues could visit them).

> Cheers,
> Henry
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Henrik Sperre Johansen
  On 18.10.2010 23:43, Igor Stasenko wrote:

> On 19 October 2010 00:30, Henrik Sperre Johansen
> <[hidden email]>  wrote:
>>   On 18.10.2010 23:21, Igor Stasenko wrote:
>>> 2010/10/19 Levente Uzonyi<[hidden email]>:
>>>> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>>>>
>>>>> 2010/10/18 Igor Stasenko<[hidden email]>:
>>>>>> On 18 October 2010 23:18, Nicolas Cellier
>>>>>> <[hidden email]>    wrote:
>>>>>>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>>>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>>>>
>>>>>>>>> Hi list,
>>>>>>>>>
>>>>>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>>>>>> that the performance is degrading fast. UI tasks takes several
>>>>>>>>> seconds
>>>>>>>>> to react to my keyboard.
>>>>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>>>>> Please
>>>>>>>> send us the result of the following expression:
>>>>>>>>
>>>>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>>>>         select: [ :each | each notNil ]
>>>>>>>>         thenCollect: [ :each | each class ->    each size ]
>>>>>>>>
>>>>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>>>>> a very unresponsive image...
>>>>>>>
>>>>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>>>>        select: [ :each | each notNil ]
>>>>>>>        thenCollect: [ :each | each class ->    each size]
>>>>>>> ->
>>>>>>> {(WeakIdentityKeyDictionary->22370).
>>>>>> This is an MC cache. And major reason of image slowdown.
>>>>>>
>>>>> Levente did this simplification in trunk:
>>>>>
>>>>> cachedDefinitions
>>>>>         ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary
>>>>> new
>>>>> ]
>>>>>
>>>>> It would be worth a try in Pharo.
>>>> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
>>>> they're not registered to the finalization process. So this won't work as
>>>> long as that's not fixed.
>>>>
>>> Huh? Can you provide a code to show it? Test case please?
>>>
>> Just add lots of objects which will be GC'd to an unregistered
>> WeakKeyDictionary.
>> After X objects are gc'd, you'd still have X nil-keyed associations in the
>> dictionary.
>> Add Y objects, gc those, and you have X+Y nil-keys in the dict.
>> (If dict grown/rehashed, all nicely placed index 1 onwards)
>>
> it doesn't sounds like incorrect behavior (i.e. pruning a nil-ed keys
> before #finalizeValues could visit them).
>
Except, you know, if they're not registered for finalization at all,
they're probably not meant to be finalized.

Cheers,
Henry

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Levente Uzonyi-2
In reply to this post by Igor Stasenko
On Tue, 19 Oct 2010, Igor Stasenko wrote:

> On 19 October 2010 00:30, Henrik Sperre Johansen
<[hidden email]> wrote:

>  On 18.10.2010 23:21, Igor Stasenko wrote:
>>
>> 2010/10/19 Levente Uzonyi<[hidden email]>:
>>>
>>> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>>>
>>>> 2010/10/18 Igor Stasenko<[hidden email]>:
>>>>>
>>>>> On 18 October 2010 23:18, Nicolas Cellier
>>>>> <[hidden email]>  wrote:
>>>>>>
>>>>>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>>>>>>
>>>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>>>
>>>>>>>> Hi list,
>>>>>>>>
>>>>>>>> I have been working with Pharo for almost a month now, and I suspect
>>>>>>>> that the performance is degrading fast. UI tasks takes several
>>>>>>>> seconds
>>>>>>>> to react to my keyboard.
>>>>>>>
>>>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>>>> Please
>>>>>>> send us the result of the following expression:
>>>>>>>
>>>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>>>        select: [ :each | each notNil ]
>>>>>>>        thenCollect: [ :each | each class ->  each size ]
>>>>>>>
>>>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>>>> a very unresponsive image...
>>>>>>
>>>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>>>       select: [ :each | each notNil ]
>>>>>>       thenCollect: [ :each | each class ->  each size]
>>>>>> ->
>>>>>> {(WeakIdentityKeyDictionary->22370).
>>>>>
>>>>> This is an MC cache. And major reason of image slowdown.
>>>>>
>>>> Levente did this simplification in trunk:
>>>>
>>>> cachedDefinitions
>>>>        ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary
>>>> new
>>>> ]
>>>>
>>>> It would be worth a try in Pharo.
>>>
>>> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
>>> they're not registered to the finalization process. So this won't work as
>>> long as that's not fixed.
>>>
>> Huh? Can you provide a code to show it? Test case please?
>>
> Just add lots of objects which will be GC'd to an unregistered
> WeakKeyDictionary.
> After X objects are gc'd, you'd still have X nil-keyed associations in the
> dictionary.
> Add Y objects, gc those, and you have X+Y nil-keys in the dict.
> (If dict grown/rehashed, all nicely placed index 1 onwards)
>
it doesn't sounds like incorrect behavior (i.e. pruning a nil-ed keys
before #finalizeValues could visit them).


It's incorrect, because WeakKeyDictionaries are not designed to be
accessed concurrently, but this can happen if the dictionary is
registered to the finalization process.
It's inefficient, because someone has to send #finalizeValues, even when
there's no finalization action.


Levente


> Cheers,
> Henry
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Igor Stasenko
2010/10/19 Levente Uzonyi <[hidden email]>:

> On Tue, 19 Oct 2010, Igor Stasenko wrote:
>
>> On 19 October 2010 00:30, Henrik Sperre Johansen
>
> <[hidden email]> wrote:
>>
>>  On 18.10.2010 23:21, Igor Stasenko wrote:
>>>
>>> 2010/10/19 Levente Uzonyi<[hidden email]>:
>>>>
>>>> On Mon, 18 Oct 2010, Nicolas Cellier wrote:
>>>>
>>>>> 2010/10/18 Igor Stasenko<[hidden email]>:
>>>>>>
>>>>>> On 18 October 2010 23:18, Nicolas Cellier
>>>>>> <[hidden email]>  wrote:
>>>>>>>
>>>>>>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>>>>>>>
>>>>>>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>>>>>>
>>>>>>>>> Hi list,
>>>>>>>>>
>>>>>>>>> I have been working with Pharo for almost a month now, and I
>>>>>>>>> suspect
>>>>>>>>> that the performance is degrading fast. UI tasks takes several
>>>>>>>>> seconds
>>>>>>>>> to react to my keyboard.
>>>>>>>>
>>>>>>>> That kind of sluggishness is probably related to finalization/gc.
>>>>>>>> Please
>>>>>>>> send us the result of the following expression:
>>>>>>>>
>>>>>>>> (WeakArray classPool at: #FinalizationDependents)
>>>>>>>>        select: [ :each | each notNil ]
>>>>>>>>        thenCollect: [ :each | each class ->  each size ]
>>>>>>>>
>>>>>>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>>>>>>> a very unresponsive image...
>>>>>>>
>>>>>>> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>>>>>>>       select: [ :each | each notNil ]
>>>>>>>       thenCollect: [ :each | each class ->  each size]
>>>>>>> ->
>>>>>>> {(WeakIdentityKeyDictionary->22370).
>>>>>>
>>>>>> This is an MC cache. And major reason of image slowdown.
>>>>>>
>>>>> Levente did this simplification in trunk:
>>>>>
>>>>> cachedDefinitions
>>>>>        ^definitions ifNil: [ definitions := WeakIdentityKeyDictionary
>>>>> new
>>>>> ]
>>>>>
>>>>> It would be worth a try in Pharo.
>>>>
>>>> IIRC Pharo's WeakKeyDictionary (and subclasses) don't work properly if
>>>> they're not registered to the finalization process. So this won't work
>>>> as
>>>> long as that's not fixed.
>>>>
>>> Huh? Can you provide a code to show it? Test case please?
>>>
>> Just add lots of objects which will be GC'd to an unregistered
>> WeakKeyDictionary.
>> After X objects are gc'd, you'd still have X nil-keyed associations in the
>> dictionary.
>> Add Y objects, gc those, and you have X+Y nil-keys in the dict.
>> (If dict grown/rehashed, all nicely placed index 1 onwards)
>>
>
> it doesn't sounds like incorrect behavior (i.e. pruning a nil-ed keys
> before #finalizeValues could visit them).
>
>
> It's incorrect, because WeakKeyDictionaries are not designed to be accessed
> concurrently, but this can happen if the dictionary is registered to the
> finalization process.

True. Another reason to not register them like MC in Pharo currently does.

> It's inefficient, because someone has to send #finalizeValues, even when
> there's no finalization action.
>
That's why in my patch, i placed #finalizeValues on finishing package
load/unload actions.

>
> Levente
>
>
>> Cheers,
>> Henry
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Stéphane Ducasse
In reply to this post by Levente Uzonyi-2

On Oct 18, 2010, at 10:19 PM, Nicolas Cellier wrote:

> 2010/10/17 Levente Uzonyi <[hidden email]>:
>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>
>>> Hi list,
>>>
>>> I have been working with Pharo for almost a month now, and I suspect
>>> that the performance is degrading fast. UI tasks takes several seconds
>>> to react to my keyboard.
>>
>> That kind of sluggishness is probably related to finalization/gc. Please
>> send us the result of the following expression:
>>
>> (WeakArray classPool at: #FinalizationDependents)
>>        select: [ :each | each notNil ]
>>        thenCollect: [ :each | each class -> each size ]
>>
>
> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
> a very unresponsive image...

can you reproduce it?
Which image ?
Which vm ?
Never heard about this error before


> ((WeakArray classPool at: #FinalizationDependents) as: Array)
>       select: [ :each | each notNil ]
>       thenCollect: [ :each | each class -> each size]
> ->
> {(WeakIdentityKeyDictionary->22370). (WeakRegistry->0).
> (WeakRegistry->0). (WeakRegistry->0). (WeakRegistry->2)}
>
> I tried to inspect it 5 minutes ago, but hey, answer in another email...
> Ah, OK, cmd+shift+. just worked. I had to interrupt
> #finalizationProcess itself finally...
> Oh inspect is sorting the keys... unusable.
> So what's in the array ? Things like
>
> (ScriptLoader>>#update12125 "a CompiledMethod(0)")->a
> MCMethodDefinition(ScriptLoader>>update12125)
> (PragmaCollector>>#release "a CompiledMethod(964689920)")->a
> MCMethodDefinition(PragmaCollector>>release)
> (Float>>#arcSin "a CompiledMethod(358088704)")->a
> MCMethodDefinition(Float>>arcSin)
>
> I don't understand yet, but I begin to gather clues why updating pharo
> goes so badly...

Thanks. Any progress in that direction is welcome.
May be this is related to change proposed by igor on weak finalization explicit call in MC that may not be fully
integrated.

Stef


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Stéphane Ducasse
In reply to this post by Levente Uzonyi-2
How can we make progress on this issue?

Stef

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Henrik Sperre Johansen
In reply to this post by Stéphane Ducasse
  On 19.10.2010 09:14, Stéphane Ducasse wrote:

> On Oct 18, 2010, at 10:19 PM, Nicolas Cellier wrote:
>
>> 2010/10/17 Levente Uzonyi<[hidden email]>:
>>> On Sat, 16 Oct 2010, Bart Veenstra wrote:
>>>
>>>> Hi list,
>>>>
>>>> I have been working with Pharo for almost a month now, and I suspect
>>>> that the performance is degrading fast. UI tasks takes several seconds
>>>> to react to my keyboard.
>>> That kind of sluggishness is probably related to finalization/gc. Please
>>> send us the result of the following expression:
>>>
>>> (WeakArray classPool at: #FinalizationDependents)
>>>         select: [ :each | each notNil ]
>>>         thenCollect: [ :each | each class ->  each size ]
>>>
>> While updating pharo 1.2, after an EndOfCentralDirectory error, I got
>> a very unresponsive image...
> can you reproduce it?
> Which image ?
> Which vm ?
> Never heard about this error before
If he means "Error: can't find EOCD position", that happens when
squeaksource is down while you try updating.
(If you inspect the zip stream it's trying to read, you'll see the
request returned an html page containing the string: "
         SqueakSource is currently down. We are sorry for the
inconvenience and
         working on the problem. In the meantime you can still commit to a
         directory repository on your disk and later copy the versions to
         SqueakSource." rather than the actual zip)
I got it too when updating yesterday, my resulting image wasn't very
unresponsive though.

Cheers,
Henry

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Henrik Sperre Johansen
In reply to this post by Stéphane Ducasse
  On 19.10.2010 09:17, Stéphane Ducasse wrote:
> How can we make progress on this issue?
>
> Stef
As far as I can tell (again, I haven't actually experienced this
slowdown), any of:
- Port Levente's WeakKeyDictionary, which is much faster.
- Wait for new VM's supporting Igors finalization scheme, which should
be much faster (haven't tested it personally)
- Rewrite the MC package caching to not use weak collections/ be smarter
about what it keeps.

Cheers,
Henry

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Speeding up Pharo 1.1

Stéphane Ducasse
In reply to this post by Stéphane Ducasse
Thanks

I added that to our agenda! December and january will be busy. We will have fun!

Stef

On Oct 19, 2010, at 9:24 AM, Henrik Sperre Johansen wrote:

> On 19.10.2010 09:17, Stéphane Ducasse wrote:
>> How can we make progress on this issue?
>>
>> Stef
> As far as I can tell (again, I haven't actually experienced this slowdown), any of:
> - Port Levente's WeakKeyDictionary, which is much faster.
> - Wait for new VM's supporting Igors finalization scheme, which should be much faster (haven't tested it personally)
> - Rewrite the MC package caching to not use weak collections/ be smarter about what it keeps.
>
> Cheers,
> Henry
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
123