当前位置: 首页 > 面试题库 >

将Node.js中os.cpus()的输出转换为百分比

姚阳德
2023-03-14
问题内容

有没有一种方法可以将os.cpus()信息转换为百分比?就像iostat的输出(在CPU部分)一样。

我的代码:

var os = require('os');
console.log(os.cpus());

输出:

[ { model: 'MacBookAir4,2',
    speed: 1800,
    times: 
     { user: 5264280,
       nice: 0,
       sys: 4001110,
       idle: 58703910,
       irq: 0 } },
  { model: 'MacBookAir4,2',
    speed: 1800,
    times: 
     { user: 2215030,
       nice: 0,
       sys: 1072600,
       idle: 64657440,
       irq: 0 } },
  { model: 'MacBookAir4,2',
    speed: 1800,
    times: 
     { user: 5973360,
       nice: 0,
       sys: 3197990,
       idle: 58773760,
       irq: 0 } },
  { model: 'MacBookAir4,2',
    speed: 1800,
    times: 
     { user: 2187650,
       nice: 0,
       sys: 1042550,
       idle: 64714820,
       irq: 0 } } ]

我想将“时间”指标转换为百分比,就像在iostat命令上显示的一样:

  cpu
us sy id
6  3 91

我知道nodejs函数中的值以CPU滴答为单位,但是我不知道应该使用什么公式将它们转换为百分比:)

谢谢。


问题答案:

根据该文档,times

包含花费在其中的CPU滴答声数量的对象:user,nice,sys,idle和irq

因此,您应该能够对时间进行求和并计算百分比,如下所示:

var cpus = os.cpus();

for(var i = 0, len = cpus.length; i < len; i++) {
    console.log("CPU %s:", i);
    var cpu = cpus[i], total = 0;

    for(var type in cpu.times) {
        total += cpu.times[type];
    }

    for(type in cpu.times) {
        console.log("\t", type, Math.round(100 * cpu.times[type] / total));
    }
}

编辑: 正如汤姆·弗罗斯特(Tom
Frost)在评论中所说,这是自系统启动以来的平均使用率。这与问题是一致的,因为iostat。但是,iostat可以选择进行定期更新,以显示自上次更新以来的平均使用情况。汤姆的方法可以很好地实现这一目标。



 类似资料:
  • 如何为新类别重新训练图像分类器中描述的脚本Retrain.py运行为 并生成输出文件。将此转换为

  • 问题内容: 我有一个非常简单的测试程序,可以打印出以下数字。 即 打印输出: df输出根fs: 但是,这是我感到困惑的地方。 25837672 + 14159676!= 42137846(实际上是39997348) 因此,如果我要执行calc 14159676/42137864 * 100,我得到的df打印结果为33%,而不是36%。 但是如果我计算 14159676/39997348 * 100

  • 问题内容: 我的数据库中有一个表,我想运行一个查询,例如 但我希望mysql返回utf8编码。在mysql中有任何功能可以执行此类任务吗?那是什么? 问题答案: 您可以使用CAST和CONVERT在不同类型的编码之间切换。参见:http : //dev.mysql.com/doc/refman/5.0/en/charset- convert.html

  • 问题内容: 这是我的查询: 这给了我: 表示116小时12分10秒。 相反,我想说的是4天20小时12分钟等 问题答案: 在我的示例中,将end_time和start_time用于固定的datetime值 根据以下两条评论,此解决方案仅适用于35天内的日期差异。如果您知道开始到结束之间有35天以上的时间,即一个月内有差异,请不要使用它。在这里使用TIMESTAMPDIFF的其他答案将起作用。

  • 上下文 我相信我已经搜索了足够的关于这个话题,但还没有找到答案。如果你们有什么答案,请帮忙。 > 我正在尝试将图像作为输出发送给来自的服务调用。 这就是我挣扎的地方。我不知道该怎么做。我还没有发布任何示例代码,因为服务器端的代码非常简单,而且我还没有服务器端的任何代码。 Android端的示例代码

  • 问题内容: 我需要将Opencover Coverage结果导入Jenkins的能力,以便随着时间的推移提取Coverage趋势数据。似乎最好的方法是找到一种方法,将opencover xml格式转换为ncover格式,然后使用NCover插件导入结果。是否存在将xpress将opencover转换为ncover的现有xslt,或将进行转换的开源工具?我已经搜索过,却一无所获。 谢谢 问题答案: