65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
// This file's contents were referenced from https://gist.github.com/sidwarkd/9578213
|
|
const fs = require('fs');
|
|
const calculateCPUPercentage = function(oldVals, newVals){
|
|
var totalDiff = newVals.total - oldVals.total;
|
|
var activeDiff = newVals.active - oldVals.active;
|
|
return Math.ceil((activeDiff / totalDiff) * 100);
|
|
};
|
|
function getValFromLine(line){
|
|
var match = line.match(/[0-9]+/gi);
|
|
if(match !== null)
|
|
return parseInt(match[0]);
|
|
else
|
|
return null;
|
|
};
|
|
const currentCPUInfo = {
|
|
total: 0,
|
|
active: 0
|
|
}
|
|
let lastCPUInfo = {
|
|
total: 0,
|
|
active: 0
|
|
}
|
|
exports.getCpuUsageOnLinux = () => {
|
|
return new Promise((resolve,reject) => {
|
|
const getUsage = function(callback){
|
|
fs.readFile("/proc/stat" ,'utf8', function(err, data){
|
|
var lines = data.split('\n');
|
|
var cpuTimes = lines[0].match(/[0-9]+/gi);
|
|
currentCPUInfo.total = 0;
|
|
currentCPUInfo.idle = parseInt(cpuTimes[3]) + parseInt(cpuTimes[4]);
|
|
for (var i = 0; i < cpuTimes.length; i++){
|
|
currentCPUInfo.total += parseInt(cpuTimes[i]);
|
|
}
|
|
currentCPUInfo.active = currentCPUInfo.total - currentCPUInfo.idle
|
|
currentCPUInfo.percentUsed = calculateCPUPercentage(lastCPUInfo, currentCPUInfo);
|
|
lastCPUInfo = Object.assign({},currentCPUInfo)
|
|
callback(currentCPUInfo.percentUsed)
|
|
})
|
|
}
|
|
getUsage(function(percentage){
|
|
setTimeout(function(){
|
|
getUsage(function(percentage){
|
|
resolve(percentage);
|
|
})
|
|
}, 3000)
|
|
})
|
|
})
|
|
}
|
|
exports.getRamUsageOnLinux = () => {
|
|
return new Promise((resolve,reject) => {
|
|
fs.readFile("/proc/meminfo", 'utf8', function(err, data){
|
|
const lines = data.split('\n');
|
|
const total = Math.floor(getValFromLine(lines[0]) / 1024);
|
|
const free = Math.floor(getValFromLine(lines[1]) / 1024);
|
|
const cached = Math.floor(getValFromLine(lines[4]) / 1024);
|
|
const used = total - free;
|
|
const percentUsed = Math.ceil(((used - cached) / total) * 100);
|
|
resolve({
|
|
used: used,
|
|
percent: percentUsed,
|
|
});
|
|
})
|
|
})
|
|
}
|