All files / lib/internal/perf event_loop_utilization.js

100% Statements 33/33
100% Branches 8/8
100% Functions 1/1
100% Lines 33/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3423x 23x 23x 23x 23x 23x 31x 31x 31x 31x 6x 6x 25x 30x 4x 4x 4x 4x 30x 30x 30x 30x 30x 16x 16x 5x 5x 5x 5x 5x 31x 23x 23x  
'use strict';
 
const nodeTiming = require('internal/perf/nodetiming');
 
const { now } = require('internal/perf/utils');
 
function eventLoopUtilization(util1, util2) {
  const ls = nodeTiming.loopStart;
 
  if (ls <= 0) {
    return { idle: 0, active: 0, utilization: 0 };
  }
 
  if (util2) {
    const idle = util1.idle - util2.idle;
    const active = util1.active - util2.active;
    return { idle, active, utilization: active / (idle + active) };
  }
 
  const idle = nodeTiming.idleTime;
  const active = now() - ls - idle;
 
  if (!util1) {
    return { idle, active, utilization: active / (idle + active) };
  }
 
  const idle_delta = idle - util1.idle;
  const active_delta = active - util1.active;
  const utilization = active_delta / (idle_delta + active_delta);
  return { idle: idle_delta, active: active_delta, utilization };
}
 
module.exports = eventLoopUtilization;