-
-
Save GaetanoPiazzolla/c40e1ebb9f709d091208e89baf9f4e00 to your computer and use it in GitHub Desktop.
const os = require("os"); | |
//Create function to get CPU information | |
function cpuAverage() { | |
//Initialise sum of idle and time of cores and fetch CPU info | |
var totalIdle = 0, totalTick = 0; | |
var cpus = os.cpus(); | |
//Loop through CPU cores | |
for (var i = 0, len = cpus.length; i < len; i++) { | |
//Select CPU core | |
var cpu = cpus[i]; | |
//Total up the time in the cores tick | |
for (type in cpu.times) { | |
totalTick += cpu.times[type]; | |
} | |
//Total up the idle time of the core | |
totalIdle += cpu.times.idle; | |
} | |
//Return the average Idle and Tick times | |
return {idle: totalIdle / cpus.length, total: totalTick / cpus.length}; | |
} | |
// function to calculate average of array | |
const arrAvg = function (arr) { | |
if (arr && arr.length >= 1) { | |
const sumArr = arr.reduce((a, b) => a + b, 0) | |
return sumArr / arr.length; | |
} | |
}; | |
// load average for the past 1000 milliseconds calculated every 100 | |
function getCPULoadAVG(avgTime = 1000, delay = 100) { | |
return new Promise((resolve, reject) => { | |
const n = ~~(avgTime / delay); | |
if (n <= 1) { | |
reject('Error: interval to small'); | |
} | |
let i = 0; | |
let samples = []; | |
const avg1 = cpuAverage(); | |
let interval = setInterval(() => { | |
console.debug('CPU Interval: ', i); | |
if (i >= n) { | |
clearInterval(interval); | |
resolve(~~((arrAvg(samples) * 100))); | |
} | |
const avg2 = cpuAverage(); | |
const totalDiff = avg2.total - avg1.total; | |
const idleDiff = avg2.idle - avg1.idle; | |
samples[i] = (1 - idleDiff / totalDiff); | |
i++; | |
}, delay); | |
}); | |
} | |
getCPULoadAVG(1000, 100).then((avg) => { | |
console.log(avg); | |
}); |
@djmisterjon Don't be an asshole dude. The author kindly shared his code which works. I use linux but I tested myself in Windows. You're are using nwjs which is a hack to run node inside a browser. This is not even a real node application. Of course it won't work.
This is not even a real node application
what wrong with you, bullshit!
And why assault and insult people for free ?
Go health your brain and also look for your language young boy.
@djmisterjon you came to the gist that the guy kindly shared and commented "bullshit". that's an asshole attitude. am i the one insulting people here? come on.
Hey there! Thank you. This was the only one that I found that showed the same values as in htop. I created an NPM package with your code: https://github.com/felipebutcher/node-os-info
sir im used your npm module from your git!
i want to use it in my bot command but it support only callback values.
please help me to use it in a variable that i can pass that into my bot response.
like this:-
Total Memory : ${totalram}GB
Free Memory : ${totalfreeram}GB
Used Memory : ${total_used}GB
I tried different things but your code brings out the most accurate readings. I tried and tested it, Thanks, mate
thanks for sharing @GaetanoPiazzolla