我正在尝试计算运行nodejs应用程序的计算机上的CPU使用率,但由于某种原因,其输出比ubuntu上的系统监视器显示的输出高很多。这是我的代码:
const cores = _.map(os.cpus(), 'times')
const free = _.sumBy(cores, 'idle')
const total = _.sumBy(cores, c => _.sum(_.values(c)))
const usage = free * 100 / total
console.log(usage)
这输出〜89%,而系统监视器显示我所有的CPU都在30%以下。我还尝试过像这样在一个核心上计算:
console.log(cores[1].idle / _.sum(_.values(cores[1])))
但是这仍然显示出一个相似的数字,该数字太高了。我在做错什么吗?
答案 0 :(得分:0)
我认为您应该查看this question的答案。
os.cpu()
提供的信息是自启动以来的平均使用情况。要了解有关CPU当前使用情况的信息,可以执行以下操作:
let cores = _.map(os.cpus(), 'times');
let freeBefore = _.sumBy(cores, 'idle');
let totalBefore = _.sumBy(cores, c => _.sum(_.values(c)));
setTimeout(() => {
let cores = _.map(os.cpus(), 'times');
let free = _.sumBy(cores, 'idle') - freeBefore;
let total = _.sumBy(cores, c => _.sum(_.values(c))) - totalBefore;
let usage = free * 100 / total;
console.log(usage);
}, 500);