docs: describe some limits of place scaling

Closes #2304
This commit is contained in:
Matthew Flatt 2018-10-11 09:32:21 -06:00
parent 959b8778d3
commit b223ce471e

View File

@ -25,14 +25,22 @@ take advantage of machines with multiple processors, cores, or
hardware threads.
@margin-note{Currently, parallel support for places is enabled
only for Racket 3m (which is the main variant of Racket), and only
only for the 3m (main) and CS variants of Racket, and only
by default for Windows, Linux x86/x86_64, and Mac OS x86/x86_64. To
enable support for other platforms, use @DFlag{enable-places} with
@exec{configure} when building Racket. The @racket[place-enabled?]
function reports whether places run in parallel.}
function reports whether places run in parallel.
Implementation and operating-system constraints may limit the
scalability of places. For example, although places can perform
garbage collections independently in the 3m variant, a garbage collection
may need to manipulate a page table that is shared across all
places, and that shared page table can be a bottleneck with enough
places---perhaps around 8 or 16.}
A @deftech{place} is a parallel task that is effectively a separate
instance of the Racket virtual machine. Places communicate through
instance of the Racket virtual machine, although all places run within
a single operating-system process. Places communicate through
@deftech{place channels}, which are endpoints for a two-way buffered
communication.