вычисление использования процессора в nodejs - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь рассчитать загрузку ЦП на компьютере, на котором запущено мое приложение nodejs, но по какой-то причине вывод намного выше, чем показывает мой системный монитор в 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%, тогда как системный монитор показывает, что все мои процессоры меньше 30%.Я также пытался вычислить его только на одном ядре, например:

console.log(cores[1].idle / _.sum(_.values(cores[1])))

Но это все равно показало слишком большое число, похожее на это.Я что-то не так делаю?

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, вам следует проверить ответ на на этот вопрос .

Информация, предоставленная os.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);
...