Skip to content

Commit

Permalink
docker cpu
Browse files Browse the repository at this point in the history
  • Loading branch information
穆客 committed Sep 12, 2018
1 parent 90a80a5 commit 8774e71
Showing 1 changed file with 37 additions and 12 deletions.
49 changes: 37 additions & 12 deletions lib/orders/system.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ var _getDockerCPUs = function () {
}
const period_path = '/sys/fs/cgroup/cpu/cpu.cfs_period_us';
const quota_path = '/sys/fs/cgroup/cpu/cpu.cfs_quota_us';
const cpus_path = '/sys/fs/cgroup/cpuset/cpuset.cpus';

if (!fs.existsSync(period_path)) {
return CPU_COUNT;
Expand All @@ -100,9 +101,36 @@ var _getDockerCPUs = function () {
if (period <= 0) {
return CPU_COUNT;
}
return quota / period;

if (!fs.existsSync(cpus_path)) {
return quota / period;
}

try {
// 0-3,4,6-7
var cpus_cnt = 0;
// --cpuset-cpus="1-3,0", cpuset.cpus = 0-3
// --cpuset-cpus="1-2,2-3", cpuset.cpus = 1-3
// duplicated cpuset already handled by docker itself
var cpus = fs.readFileSync(cpus_path, 'utf8').trim().split(',');
for (var i = 0; i < cpus.length; i++) {
if (cpus[i].includes('-')) {
var c = cpus[i].split('-');
cpus_cnt += parseInt(c[1]) - parseInt(c[0]) + 1;
} else {
cpus_cnt++;
}
}

if (cpus_cnt < quota / period) {
return cpus_cnt;
}
return quota / period;
} catch(e) {
return quota / period;
}
} catch (err) {
return CPU_COUNT
return CPU_COUNT;
}
};

Expand Down Expand Up @@ -141,21 +169,21 @@ var _getProcessCPU = function(p) {
};

var _getAllUsedCpu = function() {
const dir = '/proc'
const dir = '/proc';
var processes = [];
var all = fs.readdirSync(dir);
var total = 0;
for (let i = 0; i < all.length; i++) {
let pid = all[i];
if (_isPID(pid)) {
processes.push(path.join(dir, pid, 'stat'))
processes.push(path.join(dir, pid, 'stat'));
}
}
for (let i = 0; i < processes.length; i++) {
total += _getProcessCPU(processes[i]);
}
return total;
}
};

var dockerCpuUsage = function() {
var now_used = _getAllUsedCpu();
Expand Down Expand Up @@ -197,20 +225,18 @@ var getSystemCPU = function () {
return dockerCpuUsage();
} else if (IS_LINUX) {
return linuxCpuUsage();
} else {
return cpuUsage();
}
return cpuUsage();
};

var getLoadAvg = function () {
const load = fs.readFileSync('/proc/loadavg', 'utf8').trim();
const reg = /(\d.\d+)\s+(\d.\d+)\s+(\d.\d+)/
const reg = /(\d.\d+)\s+(\d.\d+)\s+(\d.\d+)/;
const loads = load.match(reg);
if (loads) {
return [Number(loads[1]), Number(loads[2]), Number(loads[3])];
} else {
return os.loadavg();
}
return os.loadavg();
};

var getTotalMemory = function () {
Expand All @@ -223,7 +249,7 @@ var getTotalMemory = function () {
}
}
// can not find MemTotal in meminfo, impossible
return os.totalmem()
return os.totalmem();
};

var getMemoryUsage = function () {
Expand Down Expand Up @@ -270,4 +296,3 @@ exports.run = function (callback) {
metrics: status()
});
};

0 comments on commit 8774e71

Please sign in to comment.