Comparing version 0.4.13 to 0.5.0
@@ -33,12 +33,26 @@ var fs = require('fs'); | ||
} else { | ||
var usageData = { | ||
memory: calculateMemoryUsage(sysinfo, stat) | ||
}; | ||
var usageData = {}; | ||
if(historyCpuUsage[pid] && options.keepHistory) { | ||
usageData['cpu'] = calculateCpuUsageFromHistory(sysinfo, uptime, stat, historyCpuUsage[pid]); | ||
var cpuUsage = calculateCpuUsageFromHistory(sysinfo, uptime, stat, historyCpuUsage[pid]); | ||
} else { | ||
usageData['cpu'] = calculateCpuUsage(sysinfo, uptime, stat); | ||
var cpuUsage = calculateCpuUsage(sysinfo, uptime, stat); | ||
} | ||
// memeory info | ||
usageData.memory = calculateMemoryUsage(sysinfo, stat); | ||
usageData.memoryInfo = { | ||
rss: calculateMemoryUsage(sysinfo, stat), | ||
vsize: calculateVirtualMemoryUsage(sysinfo, stat) | ||
}; | ||
// cpu info | ||
usageData.cpu = cpuUsage.pcpu; | ||
usageData.cpuInfo = { | ||
pcpu: cpuUsage.pcpu, | ||
pcpuUser: cpuUsage.pcpuUser, | ||
pcpuSystem: cpuUsage.pcpuSystem, | ||
cpuTime: cpuUsage.cpuTime | ||
}; | ||
if(options.keepHistory) { | ||
@@ -70,17 +84,33 @@ //save totalTime in history | ||
function calculateCpuUsage(sysinfo, uptime, stat) { | ||
var userTime = stat.utime / sysinfo.HERTZ; | ||
var systemTime = stat.stime / sysinfo.HERTZ; | ||
var totalTime = (stat.stime + stat.utime) / sysinfo.HERTZ; | ||
var processUptime = uptime - stat.startTime / sysinfo.HERTZ; | ||
var pcpu = (totalTime / processUptime) * 100; | ||
return pcpu; | ||
return { | ||
pcpu: (totalTime / processUptime) * 100, | ||
pcpuUser: (userTime / processUptime) * 100, | ||
pcpuSystem: (systemTime / processUptime) * 100 | ||
}; | ||
} | ||
function calculateCpuUsageFromHistory(sysinfo, uptime, stat, lastUsage) { | ||
var totalTime = (stat.stime + stat.utime) / sysinfo.HERTZ; | ||
var lastTotalTime = (lastUsage.stat.stime + lastUsage.stat.utime) / sysinfo.HERTZ; | ||
var userTime = stat.utime / sysinfo.HERTZ; | ||
var systemTime = stat.stime / sysinfo.HERTZ; | ||
var totalTime = userTime + systemTime; | ||
var usedTimeSinceLast = totalTime - lastTotalTime; | ||
var lastUserTime = lastUsage.stat.utime / sysinfo.HERTZ; | ||
var lastSystemTime = lastUsage.stat.stime / sysinfo.HERTZ; | ||
var lastTotalTime = lastUserTime + lastSystemTime; | ||
var diffTotal = totalTime - lastTotalTime; | ||
var diffUser = userTime - lastUserTime; | ||
var diffSystem = systemTime - lastSystemTime; | ||
var timeSpent = uptime - lastUsage.uptime; | ||
var pcpu = (usedTimeSinceLast / timeSpent) * 100; | ||
return pcpu; | ||
return { | ||
pcpu: (diffTotal / timeSpent) * 100, | ||
pcpuUser: (diffUser / timeSpent) * 100, | ||
pcpuSystem: (diffSystem / timeSpent) * 100, | ||
cpuTime: diffTotal | ||
}; | ||
} | ||
@@ -92,2 +122,6 @@ | ||
function calculateVirtualMemoryUsage(sysinfo, stat) { | ||
return stat.vsize * sysinfo.PAGE_SIZE; | ||
} | ||
function getUptime(callback) { | ||
@@ -113,3 +147,4 @@ fs.readFile('/proc/uptime', 'utf8', function(err, data) { | ||
START_TIME: 19, | ||
RSS: 21 | ||
RSS: 21, | ||
VSIZE: 20 | ||
}; | ||
@@ -129,3 +164,4 @@ | ||
startTime: parseFloat(parts[STAT_INDEXES.START_TIME]), | ||
rss: parseFloat(parts[STAT_INDEXES.RSS]) | ||
rss: parseFloat(parts[STAT_INDEXES.RSS]), | ||
vsize: parseFloat(parts[STAT_INDEXES.VSIZE]) | ||
}; | ||
@@ -132,0 +168,0 @@ callback(null, statObject); |
@@ -15,3 +15,3 @@ var exec = require('child_process').exec; | ||
exec('ps -o "rss,pcpu" -p ' + pid, function(err, stdout, stderr) { | ||
exec('ps -o "rss,vsize,pcpu" -p ' + pid, function(err, stdout, stderr) { | ||
if (err || stderr) return callback(err || stderr); | ||
@@ -34,3 +34,3 @@ | ||
var matcher = /[ ]*([0-9]*)[ ]*([0-9\.]*)/; | ||
var matcher = /[ ]*([0-9]*)[ ]*([0-9]*)[ ]*([0-9\.]*)/; | ||
var result = lines[1].match(matcher); | ||
@@ -41,3 +41,7 @@ | ||
memory: parseInt(result[1]) * 1024, | ||
cpu: parseFloat(result[2]) | ||
memoryInfo: { | ||
rss: parseFloat(result[1]) * 1024, | ||
vsize: parseFloat(result[2]) * 1024 | ||
}, | ||
cpu: parseFloat(result[3]) | ||
}; | ||
@@ -44,0 +48,0 @@ } else { |
{ | ||
"name": "usage", | ||
"version": "0.4.13", | ||
"version": "0.5.0", | ||
"description": "simple way to lookup linux process usage", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -15,4 +15,6 @@ var usage = require('../'); | ||
assert.ifError(err); | ||
assert.ok(result.cpu >= 0); | ||
assert.ok(result.cpu >= 0); | ||
assert.ok(result.memory > 0); | ||
assert.ok(result.memoryInfo.rss >= 0); | ||
assert.ok(result.memoryInfo.vsize >= 0); | ||
done(); | ||
@@ -28,8 +30,37 @@ }); | ||
assert.ok(result.cpu >= 0); | ||
assert.ok(result.cpuInfo.pcpu >= 0); | ||
assert.ok(result.cpuInfo.pcpuUser >= 0); | ||
assert.ok(result.cpuInfo.pcpuSystem >= 0); | ||
assert.ok(result.memory > 0); | ||
assert.ok(result.memoryInfo.rss > 0); | ||
assert.ok(result.memoryInfo.vsize > 0); | ||
for(var lc=0; lc<999999; lc++) { | ||
Math.random(); | ||
} | ||
setTimeout(function() { | ||
usage.lookup(process.pid, options, checkCpuTime); | ||
}, 200); | ||
}); | ||
function checkCpuTime (err, result) { | ||
assert.ifError(err); | ||
assert.ok(result.cpu >= 0); | ||
assert.ok(result.cpuInfo.pcpu >= 0); | ||
assert.ok(result.cpuInfo.cpuTime >= 0); | ||
assert.ok(result.cpuInfo.pcpuUser >= 0); | ||
assert.ok(result.cpuInfo.pcpuSystem >= 0); | ||
assert.ok(result.memory > 0); | ||
assert.ok(result.memoryInfo.rss > 0); | ||
assert.ok(result.memoryInfo.vsize > 0); | ||
usage.clearHistory(); | ||
usage.lookup(process.pid, options, checkCpuTime); | ||
done(); | ||
}); | ||
} | ||
}); | ||
} | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
64244
340