Andy Wingo
ed5db9bc36
nofl: Reclaim another mark bit if concurrent tracing is disabled
2025-03-05 17:17:55 +01:00
Andy Wingo
29cf0f40d3
nofl space: Rework treatment of mark bits to avoid masks
...
This will allow us to free up some metadata bits.
2025-03-05 17:10:26 +01:00
Andy Wingo
4d271e7492
nofl space: refactor to add NOFL_METADATA_BYTE_MARK_MASK
2025-03-05 16:08:41 +01:00
Andy Wingo
8c1b98d306
Make parallel tracer less verbose; tracepoints are better
2025-03-05 11:32:53 +01:00
Andy Wingo
5c4d5a72e4
Fix embarrassing bug in lospace initial mark value
2025-03-05 11:32:47 +01:00
Andy Wingo
e780d27959
nofl: Refactor SWAR mark-matching routines
...
We are going to try to use fewer bits for mark state.
2025-03-05 10:12:43 +01:00
Andy Wingo
c410992d55
Doc rewording
2025-02-14 12:34:17 +01:00
Andy Wingo
e19bf100b9
Doc rewording
2025-02-14 12:33:09 +01:00
Andy Wingo
0bef1e9435
Doc rewording
2025-02-14 12:32:54 +01:00
Andy Wingo
367e04f164
Add documentation on tracepoints
...
Also clean up how-to-build documentation
2025-02-14 12:30:40 +01:00
Andy Wingo
81da950ebe
Steal becomes an instant event
2025-02-12 14:33:05 +01:00
Andy Wingo
c0dd2e58d1
Fix embed.mk for tracepoints
2025-02-11 21:51:46 +01:00
Andy Wingo
2f0c0f8f8e
Refactor lttng makefile bits
2025-02-11 21:42:13 +01:00
Andy Wingo
d675a9b8f1
Add tracepoints to tracer itself
...
Also fix an issue whereby the main thread would spin, waiting for other
active threads to finish, doing no work itself.
2025-02-11 16:14:27 +01:00
Andy Wingo
461efa98a0
Wire up tracepoints for event-listener interface
2025-02-10 13:41:19 +01:00
Andy Wingo
cca54736a0
Add build support for tracepoints via lttng-ust
2025-02-10 12:45:25 +01:00
Andy Wingo
b517464d7f
copy-space: refactor to copy_space_can_allocate
2025-01-24 16:11:11 +01:00
Andy Wingo
68e3a692f5
Fix bug with lospace in generational configurations
2025-01-23 19:24:57 +01:00
Andy Wingo
7049871484
lospace: Fix bug when splitting freelist entries
2025-01-23 17:22:29 +01:00
Andy Wingo
7a5c994613
lospace: Add missing lock in allocation path
2025-01-23 17:12:34 +01:00
Andy Wingo
2c72034a1c
Fix bug in mmc for new lospace locking discipline
2025-01-23 15:19:09 +01:00
Andy Wingo
7a9de35aaa
lospace: Rely on object_map to be immutable during collection
...
This avoids having multiple threads serialize through a mutex. We still
have to allow for mutation on object_tree and remembered_edges, though.
2025-01-23 15:06:44 +01:00
Andy Wingo
7885ea1037
nofl: Prevent needless expansion
...
Releasing memory proceeds until there is (-NOFL_BLOCK_SIZE,0] bytes to
release; we should only expand when the number of bytes to reacquire is
large enough.
2025-01-21 21:12:45 +01:00
Andy Wingo
2a51399896
nofl: Disable some consistency checks when tracing conservatively
2025-01-21 21:09:03 +01:00
Andy Wingo
f93777c133
generational-pcc: Make a smaller pending-ephemeron nursery table
...
Otherwise we end up visiting a pending-ephemeron set that is
proportional in size to the whole heap.
2025-01-15 22:32:31 +01:00
Andy Wingo
685c63ab3a
Trim remembered-set during minor GC
...
When visiting remembered-set roots, if the target is no longer in
newspace, forget the edge.
2025-01-15 22:31:48 +01:00
Andy Wingo
cc68a9a610
Update docs
2025-01-13 21:42:18 +01:00
Andy Wingo
f9c2ce04d4
Add generational-pcc to embed.mk
2025-01-13 21:08:13 +01:00
Andy Wingo
ba65e32b00
pcc / copy-space: Allow allocations to fail
...
This fixes an issue in which minor collection of a nursery full of live
data can fail because of fragmentation, whereas really it should just
fall back to promotion.
2025-01-13 17:22:43 +01:00
Andy Wingo
5fdb14cc5e
Remove "ABORTED" atomic forwarding state
...
It was not distinguishable from "NOT_FORWARDED".
2025-01-13 16:44:12 +01:00
Andy Wingo
b23b77218c
nofl space: Fix a bug for parallel optimistic evacuation
...
If two tracer threads visit edges to the same object on an evacuation
candidate block, and they first see that the object is unmarked, then
they both try to evacuate it at the same time. Thread A might try and
fail before thread B manages to acquire the forwarding word. B needs to
see that A marked it in place, and to do that it needs to re-load the
mark byte after acquiring the forwarding word. Otherwise perhaps B
could succeed and you would end up with two copies of an object, one of
them garbled!
2025-01-13 16:28:40 +01:00
Andy Wingo
e41000094d
Add missing write barriers to finalizers.c
2025-01-13 10:23:47 +01:00
Andy Wingo
b37a7f3862
copy-space: Fix bug computing field logging byte location
...
Also re-enable survivors in generational-pcc :)
2025-01-13 09:12:34 +01:00
Andy Wingo
27f9a1f01e
gpcc: Temporarily always promote survivors
...
Generational PCC is still a bit buggy.
2025-01-10 16:40:19 +01:00
Andy Wingo
4ab72e92b0
gpcc: Don't mix survivors and new objects in same block
2025-01-10 16:40:19 +01:00
Andy Wingo
c95b7ef046
New collector configuration: generational-pcc
2025-01-10 16:40:19 +01:00
Andy Wingo
65b74b5abb
Add generational support to pcc
2025-01-10 16:40:14 +01:00
Andy Wingo
0b8630145a
Copy space clears log bits when obtaining fresh blocks
2025-01-10 16:05:34 +01:00
Andy Wingo
555694965d
Looking up large object for edge returns the object
2025-01-10 16:05:34 +01:00
Andy Wingo
e4048b5296
Add offset to field-logging fast path
2025-01-10 16:05:34 +01:00
Andy Wingo
209be38640
Pushing logged edges takes ownership of edge buffers
...
This allows field logging to proceed during collection, which might add
new edge buffers. Also fix a bug that would cause debug-mode assertion
failures, where clearing a field set didn't clear edge buffer next
pointers.
2025-01-10 16:03:53 +01:00
Andy Wingo
8b96d8cf90
Fix embarassing use of uninitialized variable
2025-01-10 16:03:53 +01:00
Andy Wingo
47aa6f041f
Add ALWAYS_INLINE to gc_field_set_visit_edge_buffer
2025-01-10 16:03:53 +01:00
Andy Wingo
e65c81518d
Fix copy space compilation in debug mode
...
Also add copy_space_should_promote
2025-01-10 16:02:37 +01:00
Andy Wingo
0318770266
pcc: abstract space that has blocks paged out and in
2025-01-06 16:59:54 +01:00
Andy Wingo
c7645975bf
pcc: abstract space into which small objects are allocated
...
This may be the nursery, in future.
2025-01-06 16:59:54 +01:00
Andy Wingo
095d2ff953
Copy space maintains block flag indicating which are survivors
2025-01-06 16:59:54 +01:00
Andy Wingo
336c2dfadd
Beginnings of scaffolding for generational pcc
2025-01-06 16:59:54 +01:00
Andy Wingo
4f8c7bef61
Refactor copy_space_forward to take src and dst spaces
2025-01-06 16:59:54 +01:00
Andy Wingo
274cf43864
Add new old-gen predicate method: check a range of addresses
2025-01-06 16:59:54 +01:00