Загрузка процессора в процентах для всей системы?

#javascript #node.js #discord.js #cpu-usage #ram

Вопрос:

Я пытаюсь создать команду botinfo со статистикой использования ресурсов. У меня есть покрытая память (хотя процент использования памяти тоже был бы хорош), но я, похоже, не могу получить загрузку процессора. Я перепробовал несколько пакетов и методов, но ни один не сработал. У меня такая штука с памятью:

 const usedMemory = os.totalmem() - os.freemem()
 

Как бы я использовал процессор и вернул его в discord.js внедрить?

Комментарии:

1. если вы не используете что-то вроде exec для вызова grep 'cpu ' /proc/stat | awk '{usage=($2 $4)*100/($2 $4 $5)} END {print usage "%"}' , чтобы получить тикер % вашей потребности, то вы усредняете его затем * 100, вам может быть интересно использовать такую библиотеку, как npmjs.com/package/systeminformation у них есть это в currentLoad , который, если вы посмотрите на код, вы увидите, как он собирает показатели, используя вышеупомянутый тикер

2. В консоли написано обещание: <ожидание>, когда я пытаюсь выполнить консоль. запишите это в журнал. И в нем говорится [обещание объекта] в discord.js встраивать

3. большинство вещей возвращают обещания в js, вам просто нужно знать, как с ними обращаться, все показано в документах по ссылкам выше, прочитайте их или вы можете пообещать Google: <в ожидании> вы найдете кучу учебных ресурсов

Ответ №1:

process.cpuUsage() Метод возвращает использование пользователем и системой процессорного времени текущего процесса в объекте со свойствами пользователь и система, значения которых microsecond values равны (миллионная доля секунды). Эти значения измеряют время, затраченное в user коде, и system код соответственно, и могут оказаться больше, чем фактическое затраченное время, если несколько ядер процессора выполняют работу для этого процесса.

Результат предыдущего вызова process.CPUUsage() может быть передан в качестве аргумента функции, чтобы получить различное значение.

 import { cpuUsage } from 'process';

const startUsage = cpuUsage();
// { user: 38579, system: 6986 }

// spin the CPU for 500 milliseconds
const now = Date.now();
while (Date.now() - now < 500);

console.log(cpuUsage(startUsage));
// { user: 514883, system: 11226 }
 

Для получения более подробной информации ознакомьтесь здесь.

Если вы хотите войти в %, вы можете использовать существующий модуль npm: node-os-utils. Вы можете использовать его вот так:

 const osu = require('node-os-utils')
const cpu = osu.cpu

const count = cpu.count() // 8

cpu.usage()
  .then(cpuPercentage => {
    console.log(cpuPercentage) // 10.38
  })

const osCmd = osu.osCmd

osCmd.whoami()
  .then(userName => {
    console.log(userName) // admin
  })
 

Для получения более подробной информации ознакомьтесь с документацией здесь.

Комментарии:

1. Как мне получить загрузку процессора для всей системы и вернуть ее в discord.js однако встраивать в процентах?

2. Я обновил ответ, это может помочь получить именно то, что вам нужно. % может быть рассчитано с помощью этого модуля. Если вы можете получить память и передать ее в discord, вам нужно сделать то же самое с этим.

3. Он возвращает [обещание объекта], но правильно отображает его в консоли

4. Я также попытался создать переменную и сделать ее равной 100 — cpu.free (), но там написано nan

5. Можете ли вы поделиться кодом там, где вы хотите его использовать? Вам просто нужно понять, как получить значения обещания — есть два метода — затем/поймать или асинхронно/ждать.

Ответ №2:

Я нашел способ сделать это. В node-os-utils есть функция (https://www.npmjs.com/package/node-os-utils) называется loadavgTime, которое необходимо использовать с loadavg-windows (https://www.npmjs.com/package/loadavg-windows) если вы находитесь в Windows. По умолчанию он принимает os.loadavg с последней минуты. Затем я разделил его на 2, а затем умножил на 10, потому что по какой-то причине он выдает странное число (между 1.__ и 2.__). Это дает его в процентах, вам просто нужно добавить % после него, когда консоль.регистрирую его. Вот код:

 const osu = require('node-os-utils')
require('loadavg-windows')

const cpu = osu.cpu
const usage = (cpu.loadavgTime() / 2) * 10

console.log(usage)