SpaDES useSpaDES useThis vignette is still a work in progress.
While profvis::profvis is an essential tool for memory
monitoring using deep R internals, it is often not sufficient for a
discrete event situation. For example, it may be useful to know the
peak memory use of an event, as this may be the limiting step
for setting up many parallel instances. There is an experimental tool
that gets triggered with
options("spades.memoryUseInterval" = xxx) where
xxx is a numeric in seconds, e.g.,
0.2. If this is set, and future and
future.callr are installed, then whenever a
spades call is made, the memory use will be assessed at
that regular interval. The procedure is: 1. spawn a future session
(i.e., a parallel session) that runs system('ps') which
lists all processes. It only keeps the process that represents the
process ID of the main R session; 2. that ps call writes to
a text file every getOption('spades.memoryUseInterval'); 3.
if you ran this with a spades call, setting
options("spades.memoryUseInterval" = 0.5) or some other
interval (in seconds), it will read that text file into the
simList at the end (on.exit) of the
spades call (doing this triggers a file deletion of the
text file); 4. the object is then in
sim$.memoryUse$obj.
At that point, the function memoryUse can be called on
the simList and it will do a join on the
sim$.memoryUse$obj with the completed(sim)
by time stamp, so each event shows its memory use.
if (requireNamespace("future", quietly = TRUE)) &&
requireNamespace("future.callr", quietly = TRUE)) {
options("spades.memoryUseInterval" = 0.5)
# run your simInit and spades calls here
# sim <- simInit()
# sim <- spades(sim)
memoryUse(sim, max = TRUE) # this should show peak memory use by eventType -- i.e., summarizes if multiple times
memoryUse(sim, max = FALSE) # this should show peak memory use by event
}