基本思路
- 获取进程开始和结束时的 CPU 时间。
- 获取开始和结束时的系统 CPU 时间。
- 通过计算进程 CPU 时间变化与系统 CPU 时间变化的比例,得出进程 CPU 使用率。
实现方法
- 使用
os
内置模块:os
模块提供了获取系统相关信息的方法,包括 CPU 时间。
- 代码示例:
const os = require('os');
const { performance } = require('perf_hooks');
function getCPULoad() {
const startUsage = process.cpuUsage();
const startCpuTime = os.cpus().reduce((acc, cpu) => acc + cpu.times.user + cpu.times.nice + cpu.times.sys + cpu.times.idle + cpu.times.irq, 0);
const startTime = performance.now();
// 等待一段时间,例如1000毫秒
return new Promise((resolve) => {
setTimeout(() => {
const endUsage = process.cpuUsage(startUsage);
const endCpuTime = os.cpus().reduce((acc, cpu) => acc + cpu.times.user + cpu.times.nice + cpu.times.sys + cpu.times.idle + cpu.times.irq, 0);
const endTime = performance.now();
const cpuDelta = endUsage.user + endUsage.system;
const totalDelta = (endCpuTime - startCpuTime) + (endTime - startTime);
const cpuUsagePercentage = (cpuDelta / totalDelta) * 100;
resolve(cpuUsagePercentage);
}, 1000);
});
}
getCPULoad().then(load => {
console.log(`当前进程 CPU 使用率: ${load}%`);
});
- 第三方库
pidusage
:
- 安装:
npm install pidusage
。
- 使用示例:
const pidusage = require('pidusage');
pidusage(process.pid, (err, stats) => {
if (err) {
console.error(err);
return;
}
console.log(`当前进程 CPU 使用率: ${stats.cpu}%`);
});
pidusage
库会定期获取进程的 CPU 使用率等信息,使用起来相对简洁。