GC CRIU: Reinit HeapRegionDescriptorExtensions (Region Obj Lists) - #17614
Conversation
b4ac4d5 to
b65dfd0
Compare
|
@amicic could you please have a look |
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
b1e0cdc to
c724f86
Compare
There was a problem hiding this comment.
not setting ref list to null?
There was a problem hiding this comment.
There's no global ref list
There was a problem hiding this comment.
there is global referenceObjectLists but only used for Metronome. for completeness, I'd clear it here, as well
i did notice that it was never cleared in its constructor. while there to clear it, put referenceObjectLists and unfinalizedObjectLists next to each other
There was a problem hiding this comment.
There's no global ref list
Ahh yes there is! I assumed not because its never built while initing the lists (like the other 3 lists)
There was a problem hiding this comment.
Could you please clarify what you mean by
i did notice that it was never cleared in its constructor. while there to clear it, put referenceObjectLists and unfinalizedObjectLists next to each other
There was a problem hiding this comment.
in MM_GCExtensions referenceObjectLists is declared by never inited/cleared. actually, not just that one, but a few other fileds
There was a problem hiding this comment.
the 4 ObjectLists fields are scattered in that structure. would be nice to have them next to each other
There was a problem hiding this comment.
we should also start incrementally prepending '_' to those fields in Extensions/ExtensionsBase, but if that would require a lot more file to touch (just to fix those 4), you can ignore it
9e63614 to
57ba037
Compare
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
HeapRegionDescriptorExtensions contain multiple array of obj lists which are inited at startup based on the startup thread count. These must be reinitialized during restore (CRIU) according to the new GC thread count. Specifically, when the thread count is increased, it is necessary to divide the region object lists. This is required to improve parallelism with GC threads and ultimately improve GC performance for the restore environment. For background, see eclipse-omr/omr#6888 (Compensate for Thread Count Change). Signed-off-by: Salman Rana <salman.rana@ibm.com>
|
jenkins test sanity aix jdk11 |
|
jenkins test sanity xlinuxcriu jdk17 |
|
jenkins compile win32 jdk8 |
|
jenkins test sanity win jdk11 |
| for (uintptr_t index = 0; index < arrayElements; index++) { | ||
| Assert_MM_true(arrayElementsTotal >= arrayElementsToCopy); | ||
| /* Check whether a new array instance in being created from an existing array. If so, copy over the elements first. */ | ||
| if (arrayElementsToCopy > 0) { |
There was a problem hiding this comment.
I see this a number of places: what the point of if statements like the one here? If arrayElementsToCopy == 0, the for loop won't execute.
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
Integrate with downstream OpenJ9 restore reinit APIs: - Thread Local (env) Obj Buffers - Region Extensions Object Lists Depends on eclipse-openj9/openj9#17614 Signed-off-by: Salman Rana <salman.rana@ibm.com>
HeapRegionDescriptorExtensions contain multiple array of obj lists which are inited at startup based on the startup thread count. These must be reinitialized during restore (CRIU) according to the new GC thread
count. Specifically, when the thread count is increased, it is necessary to divide the region object lists. This is required to improve parallelism with GC threads and ultimately improve GC performance for the restore environment. For background, see eclipse-omr/omr#6888 (Compensate for Thread Count Change).
Signed-off-by: Salman Rana salman.rana@ibm.com