killNode {parallelly} | R Documentation |
Terminate one or more cluster nodes using process signaling
Description
Terminate one or more cluster nodes using process signaling
Usage
killNode(x, signal = tools::SIGTERM, ...)
Arguments
x |
cluster or cluster node to terminate. |
signal |
An integer that specifies the signal level to be sent
to the parallel R process.
It's only |
... |
Not used. |
Details
Note that the preferred way to terminate a cluster is via
parallel::stopCluster()
, because it terminates the cluster nodes
by kindly asking each of them to nicely shut themselves down.
Using killNode()
is a much more sever approach. It abruptly
terminates the underlying R process, possibly without giving the
parallel worker a chance to terminate gracefully. For example,
it might get terminated in the middle of writing to file.
tools::pskill()
is used to send the signal to the R process hosting
the parallel worker.
Value
TRUE if the signal was successfully applied, FALSE if not, and NA if signaling is not supported on the specific cluster or node. Warning: With R (< 3.5.0), NA is always returned. This is due to a bug in R (< 3.5.0), where the signaling result cannot be trusted.
Known limitations
This function works only with cluster nodes of class RichSOCKnode
,
which were created by makeClusterPSOCK()
. It does not work when
using parallel::makeCluster()
and friends.
Currently, it's only possible to send signals to parallel workers, that
is, cluster nodes, that run on the local machine.
If attempted to use killNode()
on a remote parallel workers, NA
is returned and an informative warning is produced.
See Also
Use isNodeAlive()
to check whether one or more cluster nodes are alive.
Examples
cl <- makeClusterPSOCK(2)
print(isNodeAlive(cl)) ## [1] TRUE TRUE
res <- killNode(cl)
print(res)
## It might take a moment before the background
## workers are shutdown after having been signaled
Sys.sleep(1.0)
print(isNodeAlive(cl)) ## [1] FALSE FALSE