Search code examples
node.jsupstart

Upstart: each process on different core


I'm trying to use upstart to launch multiple instances of node.js - each on separate cpu core listening on different port.

Launch configuration:

start on startup

task

env NUM_WORKERS=2

script
  for i in `seq 1 $NUM_WORKERS`
  do
    start worker N=$i
  done
end script

Worker configuration:

instance $N

script
    export HOME="/node"

    echo $$ > /var/run/worker-$N.pid
    exec sudo -u root /usr/local/bin/node /node/server.js >> /var/log/worker-$N.sys.log 2>&1
end script

How do I specify that each process should be launched on a separate core to scale node.js inside the box?


Solution

  • taskset allows you to set CPU affinities for any Linux process. But Linux kernel already favors keeping a process on the same CPU to optimize performance.