process-stats
Version:
Display dynamic real-time information about running Node.js process
40 lines (31 loc) • 917 B
JavaScript
const prettyBytes = require('pretty-bytes')
const calcPercent = require('calc-percent')
const average = require('simple-average')
const prettyMs = require('pretty-ms')
const round = n => Number(n.toFixed(2))
const getMemStats = (mem, memTotal) => ({
value: mem,
pretty: prettyBytes(mem),
percent: Number(calcPercent(mem, memTotal))
})
const getMs = time => ({
value: time,
pretty: prettyMs(time)
})
const getLoadAvg = (collection, cpus) => {
const value = collection.map(round)
return {
value,
normalized: value.map(load => round(load / cpus))
}
}
module.exports = top => {
const aggregator = average()
const getCpuUsage = () => {
const percentUsage = top.cpu().percent * 100
const { avg: avgUsage } = aggregator.add(percentUsage)
return { value: avgUsage, pretty: `${avgUsage.toFixed(1)}%` }
}
return { getCpuUsage, getMemStats, getLoadAvg, getMs }
}