On 25 November 2013 19:01, Alexandre Bergel <alexandre.bergel@me.com> wrote:
If I add, letâs say, 30 000 000 elements into c. After the addition the array will be very very big. Which means that it may be in a different segment memory than the one that contains âcâ. Do you feel this may be a problem? I am thinking about a long jump between c and array. Long jumps cost more than short jumps right?
I don't think it'll be an issue because statistically it'll affect a minority of collections. No, its not necessarily the case that there may be a higher cost. This depends on how the processor's memory hierarchy works. Further, performance may be more affected by how clustered the elements of the collection are than the collection itself.
Ah okay. What do you mean by how the elements are clustered?
Do you feel there are some suboptimal situation with this situation?
I think it's way too early to worry about this kind of thing. The system needs to work and be tuned. There's plenty of time to address clustering, etc.
I am not sure to understand what clustering means here.
Basically it means how close an elements of collection in memory - the closer, the better. Of course it only will have effect if you using collection for iterating over it (like do: etc).. But if you using it for random access, there's not much CPU & hardware can do in order to optimize access to it, especially when speaking about very large collections with millions of entries.
Thanks again for taking the time to answer questions.
Alexandre
Alexandre
NB: I cc the mailing list to see whether other may help in understand
better whatâs going on with segment and generations
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
On Nov 19, 2013, at 1:37 PM, Eliot Miranda <eliot.miranda@gmail.com> wrote:
Hi Alexandre,
On Mon, Nov 18, 2013 at 7:40 AM, Alexandre Bergel < alexandre.bergel@me.com> wrote: Hi Eliot,
Stef told me you are working hard on improving the Pharo VM. In particular making the VM support fragmented memory. If I understand correctly, this will relieve the VM from having a continuous block of memory to hold the whole image. Really cool!
A better term is segmented memory. fragmentation in memory management means free space getting divided into too small pieces to be useful.
I have a general question regarding VM. Are you aware of other Virtual machines supporting this? Does the Java VM support fragmented memory? .Net? V8?
Any VM that uses the train algorithm supports segmented memory. Any VM that uses "pools" or "regions" uses segmented memory. VisualWorks' VM supports segments. I'm pretty sure that V8 .Net & HotSpot provide segmented memory.
I would like to mention this in a research paper I am working on.
Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
-- best, Eliot
-- best, Eliot
-- Best regards, Igor Stasenko.