Re: [Pharo-dev] VM with fragmented memory
Hi Eliot, I have a question still on segmented memory. Consider an object âc := OrderedCollection newâ. It is likely that the internal "arrayâ and the object c will be in the same generation and in the same memory segment. 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? Do you feel there are some suboptimal situation with this situation? 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
Hello, To answer your question, V8 definitely supports memory segments. I don't know about papers but in the code each segment is an instance of Heap (see heap.cc and heap.h in the source). The 2 young spaces are in another contiguous segment of 8Mb. Each segment of V8 are one of this kind (all instances of Heap): * NewSpace: New object allocations go here. Capacity is 8MB. It's divided into two contiguous semispaces, and periodically collected using Cheney's algorithm. Uses bump-allocation. * OldSpaces: These allocate memory in 64-128KB chunks of 8KB pages. They come in the following flavors: * MapSpace: Exclusively for Maps (similar to js::Shape), and Maps *always* go here. * CodeSpace: Exclusively for Code. * DataSpace: For flat strings and numbers; can't reference objects, except for maps. * PointerSpace: For anything not a Map or Code that can reference other objects. * CellSpace: Seems to store global properties or something. * LOSpace: For large objects, where "large" means it needs more than ~8KB of storage. I have no proof for hotspot (their code is too complex) but I'm sure they have it too. For the other question (adding elements to OrderedCollection), Eliot will answer it in more details, but the main idea is that you have the heap chopped into segments of a fixed size (1Mb in Cog, and 64-128KB chunks in V8), therefore for object bigger than a segment, you need to handle specifically the object, i.e. having a segment of the size of the object. If you add 30 000 elements to an OrderedCollection, the object will still be under 1MB so it is ok, now if you a 3 million of elements to this OrderedCollection, you need to handle specifically, Therefore you have performance loss for object of more than 1Mb but there are not common so you will not notice it (you can hardly have thousands of objects bigger than 1Mb allocated and deallocated regularly, and you need this amount to notice the performance loss). An interesting point in V8 is that the data and pointers are not in the same spaces. It would mean in Cog, if I understand correctly, that byte and word objects are not in the same space as other objects. I guess this simplifies the GC logic. I don't know if they did that in VW. 2013/11/25 Alexandre Bergel <alexandre.bergel@me.com>
Hi Eliot,
I have a question still on segmented memory.
Consider an object âc := OrderedCollection newâ. It is likely that the internal "arrayâ and the object c will be in the same generation and in the same memory segment. 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?
Do you feel there are some suboptimal situation with this situation?
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
Hi: On 25 Nov 2013, at 17:46, Clément Bera <bera.clement@gmail.com> wrote:
An interesting point in V8 is that the data and pointers are not in the same spaces. It would mean in Cog, if I understand correctly, that byte and word objects are not in the same space as other objects. I guess this simplifies the GC logic. I don't know if they did that in VW.
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.
A very general reference could be the Garbage Collection Handbook (Jones, Hosking, Moss) chapter 8 and 10: Partitioning the heap 8.1 Terminology 8.2 Why to partition Partitioning by mobility Partitioning by size Partitioning for space Partitioning by kind Partitioning for yield Partitioning to reduce pause time Partitioning for locality Partitioning by thread Partitioning by availability Partitioning by mutability 8.3 How to partition 8.4 When to partition Chapter 10 elaborates on large objects and pointer-free objects (as well as algorithms that use partitioning). Best regards Stefan -- Stefan Marr Software Languages Lab Vrije Universiteit Brussel Pleinlaan 2 / B-1050 Brussels / Belgium http://soft.vub.ac.be/~smarr Phone: +32 2 629 2974 Fax: +32 2 629 3525
Ok, thanks Clément for the explanation. what do you mean with "now if you a 3 million of elements to this OrderedCollection, you need to handle specificallyâ. What the VM does exactly in that case? Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Nov 25, 2013, at 1:46 PM, Clément Bera <bera.clement@gmail.com> wrote:
Hello,
To answer your question, V8 definitely supports memory segments. I don't know about papers but in the code each segment is an instance of Heap (see heap.cc and heap.h in the source). The 2 young spaces are in another contiguous segment of 8Mb.
Each segment of V8 are one of this kind (all instances of Heap):
* NewSpace: New object allocations go here. Capacity is 8MB. It's divided into two contiguous semispaces, and periodically collected using Cheney's algorithm. Uses bump-allocation. * OldSpaces: These allocate memory in 64-128KB chunks of 8KB pages. They come in the following flavors: * MapSpace: Exclusively for Maps (similar to js::Shape), and Maps *always* go here. * CodeSpace: Exclusively for Code. * DataSpace: For flat strings and numbers; can't reference objects, except for maps. * PointerSpace: For anything not a Map or Code that can reference other objects. * CellSpace: Seems to store global properties or something. * LOSpace: For large objects, where "large" means it needs more than ~8KB of storage.
I have no proof for hotspot (their code is too complex) but I'm sure they have it too.
For the other question (adding elements to OrderedCollection), Eliot will answer it in more details, but the main idea is that you have the heap chopped into segments of a fixed size (1Mb in Cog, and 64-128KB chunks in V8), therefore for object bigger than a segment, you need to handle specifically the object, i.e. having a segment of the size of the object. If you add 30 000 elements to an OrderedCollection, the object will still be under 1MB so it is ok, now if you a 3 million of elements to this OrderedCollection, you need to handle specifically, Therefore you have performance loss for object of more than 1Mb but there are not common so you will not notice it (you can hardly have thousands of objects bigger than 1Mb allocated and deallocated regularly, and you need this amount to notice the performance loss).
An interesting point in V8 is that the data and pointers are not in the same spaces. It would mean in Cog, if I understand correctly, that byte and word objects are not in the same space as other objects. I guess this simplifies the GC logic. I don't know if they did that in VW.
2013/11/25 Alexandre Bergel <alexandre.bergel@me.com> Hi Eliot,
I have a question still on segmented memory.
Consider an object âc := OrderedCollection newâ. It is likely that the internal "arrayâ and the object c will be in the same generation and in the same memory segment. 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?
Do you feel there are some suboptimal situation with this situation?
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
Hi Alexandre, On Mon, Nov 25, 2013 at 7:42 AM, Alexandre Bergel <alexandre.bergel@me.com>wrote:
Hi Eliot,
I have a question still on segmented memory.
Consider an object âc := OrderedCollection newâ. It is likely that the internal "arrayâ and the object c will be in the same generation and in the same memory segment.
There is no guarantee but it is very likely they will end up in the same segment, yes.
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. 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.
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
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. 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
Eliot do you think we could earn performance on Cog just by editing its settings ? I mean for example the settings: - number of PICs maximum case - JIT cache size - ... If we had something (like a job on a build server) that would try all the values in a range possible for each setting, I mean for each setting, compile the VM, run Richards/DeltaBlue, and store the result, would we be able to earn performance by looking for the best result ? I read once in a java VM they earned 15% performance by doing something similar. I don't know if you did something like that before the Cog VM release. 2013/11/25 Alexandre Bergel <alexandre.bergel@me.com>
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.
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
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.
Thanks for all your explanation. There are useful! Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Nov 25, 2013, at 6:20 PM, Igor Stasenko <siguctua@gmail.com> wrote:
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.
participants (5)
-
Alexandre Bergel -
Clément Bera -
Eliot Miranda -
Igor Stasenko -
Stefan Marr