mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-16 17:27:33 +02:00
Added notes
This commit is contained in:
parent
918e78cb21
commit
d9c27b7756
1 changed files with 14 additions and 0 deletions
|
@ -153,6 +153,20 @@ struct gc_thread_data_t {
|
||||||
/**
|
/**
|
||||||
* Group heap pages by type, to attempt to limit fragmentation
|
* Group heap pages by type, to attempt to limit fragmentation
|
||||||
* and improve performance.
|
* and improve performance.
|
||||||
|
|
||||||
|
TODO: starting to run into problems when adding additional "sizes" of heap page,
|
||||||
|
possibly due to increasing amounts of page faults due to non-locality???
|
||||||
|
|
||||||
|
Basically for X86_64 everything works great when a 96 byte heap is added, but slows way down when additional
|
||||||
|
heaps (128, 160) are also added.
|
||||||
|
|
||||||
|
32 bit x86 is starting to have trouble with just a 96 byte heap added.
|
||||||
|
|
||||||
|
In the future, a better solution might be to allocate arrays (closureN's, vectors, bytevectors, and strings)
|
||||||
|
as fixed-size chunks to prevent heap fragmentation. The advantage is then we have no fragmentation directly.
|
||||||
|
But, an array will no longer be contiguous so they may cause other problems, and the runtime has to change
|
||||||
|
to work with non-contiguous arrays. This would also cause a lot of problems for strings since the built-in
|
||||||
|
functions would no longer work (EG: strlen, etc).
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
HEAP_SM = 0 // 32 byte objects (min gc_heap_align)
|
HEAP_SM = 0 // 32 byte objects (min gc_heap_align)
|
||||||
|
|
Loading…
Add table
Reference in a new issue