Skip to content

Instantly share code, notes, and snippets.

@jitcoder
Created October 23, 2019 22:53
Show Gist options
  • Save jitcoder/e653d2e9010048f79301c840759f45dd to your computer and use it in GitHub Desktop.
Save jitcoder/e653d2e9010048f79301c840759f45dd to your computer and use it in GitHub Desktop.
module that returns system health info
// const startUsage = process.cpuUsage();
// // { user: 38579, system: 6986 }
// // spin the CPU for 500 milliseconds
// const now = Date.now();
// while (Date.now() - now < 500);
// console.log(process.cpuUsage(startUsage));
// // { user: 514883, system: 11226 }
let prev = process.hrtime();
let prevUsage = process.cpuUsage();
let average = 0;
let averageSum = 0;
let averageCount = 0;
let busy = false;
let delay = 0;
let cpuUsage = process.cpuUsage(prevUsage);
let startTime = process.hrtime();
while (process.hrtime(startTime) * 1e-6 < 500) {
}
const maxCpu = process.cpuUsage();
const maxCpuTime = maxCpu.user + maxCpu.system;
let currentCpuTime = 0;
console.log(`maxCpu ${JSON.stringify(maxCpu)}`);
setInterval(async () => {
delay = Math.round(process.hrtime(prev)[1] * 1e-6);
prev = process.hrtime();
averageSum += delay;
averageCount++;
average = Math.round(averageSum / averageCount);
if (averageCount >= 10) {
averageSum = average;
averageCount = 1;
}
// console.log(`Delay ${delay}ms, Average: ${average !== 0 ? average : delay}ms`);
busy = delay >= 400 || average >= 400;
cpuUsage = process.cpuUsage(prevUsage);
currentCpuTime = cpuUsage.user + cpuUsage.system;
prevUsage = process.cpuUsage();
}, 1000);
module.exports = {
delay: () => average,
busy: () => busy,
cpuUsage: () => Math.round((currentCpuTime / maxCpuTime)*100)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment