The VM can be configured through a variety of environment variables. Such settings include the number of threads to use, how often to collect garbage, and more.
|INKO_PRIMARY_THREADS||CPU cores||The number of threads for running processes.|
|INKO_BLOCKING_THREADS||CPU cores||The number of threads for blocking processes.|
|INKO_GC_THREADS||CPU cores||The number of GC coordination threads.|
|INKO_TRACER_THREADS||CPU cores||The number of threads for parallel tracing during garbage collection.|
|INKO_BYTECODE_THREADS||CPU cores||The number of threads to use for parsing bytecode.|
|INKO_REDUCTIONS||1000||The number of reductions before a process is suspended.|
|INKO_YOUNG_THRESHOLD||256||The number of blocks to allocate before triggering a young collection.|
|INKO_MATURE_THRESHOLD||512||The number of blocks to allocate before triggering a full collection.|
|INKO_HEAP_GROWTH_FACTOR||1.5||The factor to grow the heap by if not enough memory could be garbage collected.|
|INKO_HEAP_GROWTH_THRESHOLD||0.9||The percentage of the heap (0% being 0.0 and 100% being 1.0) that needs to remain in use before growing it.|
|INKO_PRINT_GC_TIMINGS||false||Prints GC collection timings to STDERR.|
Here "CPU cores" means the number of logical CPU cores.
The number of bytecode threads is limited to a maximum of 4 threads. So if you have 12 CPU cores, only 4 will be used. But if you have 3 CPU cores, all 3 will be used.