const os = require('os'); /** * @module CpuUtils */ module.exports = { /** * * @return {{idle: number, total: number}} */ cpuAverage: () => { //Initialise sum of idle and time of cores and fetch CPU info let totalIdle = 0, totalTick = 0; const cpus = os.cpus(); cpus.forEach(cpu => { //Total up the time in the cores tick Object.keys(cpu.times).forEach(type => { 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 }; }, /** * * @param {{idle: number, total: number}} startMeasure * @param {{idle: number, total: number}} endMeasure */ calculateCpuUsagePercent: (startMeasure, endMeasure) => { //Calculate the difference in idle and total time between the measures const idleDifference = endMeasure.idle - startMeasure.idle; const totalDifference = endMeasure.total - startMeasure.total; //Calculate the average percentage CPU usage return Math.ceil(100 - 100 * idleDifference / totalDifference); } };