1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-08 21:20:19 +02:00

Update documentation

This commit is contained in:
Andy Wingo 2024-08-05 15:19:07 +02:00
parent e40b224faf
commit ea15d142fc
2 changed files with 9 additions and 7 deletions

View file

@ -24,11 +24,12 @@ entries to the worker's [shared worklist](../src/shared-worklist.h).
When a worker runs out of local work, it will first try to remove work When a worker runs out of local work, it will first try to remove work
from its own shared worklist, then will try to steal from other workers. from its own shared worklist, then will try to steal from other workers.
Because threads compete to evacuate objects, `pcc` uses [atomic If only one tracing thread is enabled (`parallelism=1`), `pcc` uses
compare-and-swap instead of simple forwarding pointer non-atomic forwarding, but if multiple threads compete to evacuate
updates](./manual.md#forwarding-objects), which imposes around a ~30% objects, `pcc` uses [atomic compare-and-swap instead of simple
performance penalty. `pcc` generally starts to outperform `scc` when it forwarding pointer updates](./manual.md#forwarding-objects). This
can trace with 2 threads, and gets better with each additional thread. imposes around a ~30% performance penalty but having multiple tracing
threads is generally worth it, unless the object graph is itself serial.
As with `scc`, the memory used for the external worklist is dynamically As with `scc`, the memory used for the external worklist is dynamically
allocated from the OS and is not currently counted as contributing to allocated from the OS and is not currently counted as contributing to

View file

@ -6,8 +6,7 @@ Whippet has five collectors currently:
- [Serial copying collector (`scc`)](./collector-scc.md): Like `semi`, - [Serial copying collector (`scc`)](./collector-scc.md): Like `semi`,
but with support for multiple mutator threads. but with support for multiple mutator threads.
- [Parallel copying collector (`pcc`)](./collector-pcc.md): Like `scc`, - [Parallel copying collector (`pcc`)](./collector-pcc.md): Like `scc`,
but with support for multiple tracing threads. Faster than `scc` if but with support for multiple tracing threads.
multiple cores are available at collection-time.
- [Whippet collector (`whippet`)](./collector-whippet.md): - [Whippet collector (`whippet`)](./collector-whippet.md):
Immix-inspired collector. Optionally parallel, conservative (stack Immix-inspired collector. Optionally parallel, conservative (stack
and/or heap), and/or generational. and/or heap), and/or generational.
@ -27,6 +26,8 @@ out mutator/embedder bugs. Then if memory is tight, switch to
If you are aiming for maximum simplicity and minimal code size (ten If you are aiming for maximum simplicity and minimal code size (ten
kilobytes or so), use `semi`. kilobytes or so), use `semi`.
Only use `scc` if you are investigating GC internals.
If you are writing a new project, you have a choice as to whether to pay If you are writing a new project, you have a choice as to whether to pay
the development cost of precise roots or not. If you choose to not have the development cost of precise roots or not. If you choose to not have
precise roots, then go for `stack-conservative-parallel-whippet` precise roots, then go for `stack-conservative-parallel-whippet`