-
-
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 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
This worked just how i wanted, thanks a lot. I couldn't find this anywhere, even with AI present
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.