Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
doc: note synchronous part of child_process.spawn
If an application has a large RSS (GB), jorangreef
observed that child_process.spawn will block the
event loop for ms-s.

This is surprising behavior and merits documentation.

Refs: #14917
  • Loading branch information
davisjam committed Jun 9, 2018
commit d9fcde6cdec62b5ec0749509fc7a66d5ab28ac69
5 changes: 5 additions & 0 deletions doc/api/child_process.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ without blocking the Node.js event loop. The [`child_process.spawnSync()`][]
function provides equivalent functionality in a synchronous manner that blocks
the event loop until the spawned process either exits or is terminated.

*Note*: On some operating systems, the [`child_process.spawn()`][] method
performs memory operations synchronously before decoupling the event loop
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be more specific and write "On UNIX-like operating systems" and tweak the wording to clarify that it's the underlying fork() system call that is responsible for copying memory, not child_process.spawn() (directly.)

Copy link
Copy Markdown
Contributor Author

@davisjam davisjam Jun 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like "UNIX-like" (217acc4), but I don't think we need to go into detail on the root cause. The V8 link explains things.

from the child. Applications with a large memory footprint may find frequent
[`child_process.spawn()`][] calls to be a bottleneck.

For convenience, the `child_process` module provides a handful of synchronous
and asynchronous alternatives to [`child_process.spawn()`][] and
[`child_process.spawnSync()`][]. *Note that each of these alternatives are
Expand Down