From 78ef195d36c961a27d93d441e6151b3832c26d8a Mon Sep 17 00:00:00 2001 From: Dean Rather Date: Fri, 14 Sep 2018 07:32:22 +0000 Subject: [PATCH 1/2] feature: added support for cpu_limit option for apps --- lib/API/schema.json | 5 +++++ lib/God/ForkMode.js | 16 ++++++++++++++++ package.json | 2 ++ 3 files changed, 23 insertions(+) diff --git a/lib/API/schema.json b/lib/API/schema.json index 94ef70e03..3a95f1e22 100644 --- a/lib/API/schema.json +++ b/lib/API/schema.json @@ -100,6 +100,11 @@ "docDefault": "~/.pm2/pids/app_name-id.pid", "docDescription": "File path where the pid of the started process is written by pm2" }, + "cpu_limit": { + "type": "number", + "docDefault": 0, + "docDescription": "Max percentage of a CPU core to allow this app to use" + }, "restart_delay": { "type" : "number", "docDefault": 0, diff --git a/lib/God/ForkMode.js b/lib/God/ForkMode.js index 1bddafb12..62a3e35c0 100644 --- a/lib/God/ForkMode.js +++ b/lib/God/ForkMode.js @@ -112,6 +112,22 @@ module.exports = function ForkMode(God) { cspr.process.pid = cspr.pid; cspr.pm2_env = pm2_env; + // limit CPU + if (pm2_env.cpu_limit) { + var cpuLimiter = require('cpulimit'); + var cpuLimiterOptions = { + limit: pm2_env.cpu_limit, + includeChildren: true, + pid: cspr.process.pid + }; + cpuLimiter.createProcessFamily(cpuLimiterOptions, function (err, processFamily) { + if (err) { + return; + } + cpuLimiter.limit(processFamily, cpuLimiterOptions); + }); + } + cspr.stderr.on('data', function forkErrData(data) { var log_data = null; diff --git a/package.json b/package.json index 33c7c8159..9bf875caa 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,9 @@ "chalk": "^2.4.1", "chokidar": "^2.0.4", "cli-table-redemption": "^1.0.0", + "coffee-script": "^1.12.7", "commander": "2.15.1", + "cpulimit": "git+https://github.com/vangelov/node-cpulimit.git", "cron": "^1.3", "debug": "^3.1", "eventemitter2": "5.0.1", From f073766e06e6e5e675f744d2975a16adaa1f4e6a Mon Sep 17 00:00:00 2001 From: Dean Rather Date: Fri, 14 Sep 2018 07:35:10 +0000 Subject: [PATCH 2/2] chore: remove coffee-script accidentally added by running test suite --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 9bf875caa..3f34d3db2 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,6 @@ "chalk": "^2.4.1", "chokidar": "^2.0.4", "cli-table-redemption": "^1.0.0", - "coffee-script": "^1.12.7", "commander": "2.15.1", "cpulimit": "git+https://github.com/vangelov/node-cpulimit.git", "cron": "^1.3",