Convert the output of os.cpus() in Node.js to percentage

后端 未结 8 1615
伪装坚强ぢ
伪装坚强ぢ 2020-12-08 11:27

Is there a way to convert the os.cpus() info to percentage? Just like the output of iostat (on the CPU section).

My code:

var os = require(\'os\');
c         


        
8条回答
  •  执念已碎
    2020-12-08 11:40

    This is my Solution

    Interval is in Seconds.

    10 will calculate load over the last 10 seconds!

    var _  = require("underscore");
    var os = require("os"); 
    var interval = 1;
    var old = _.map(os.cpus(),function(cpu){ return cpu.times;})
    
    setInterval(function() {
        var result = [];
        var current = _.map(os.cpus(),function(cpu){ return cpu.times; })
        _.each(current, function(item,cpuKey){
            result[cpuKey]={}
    
            var oldVal = old[cpuKey];
            _.each(_.keys(item),function(timeKey){
                var diff = (  parseFloat((item[timeKey]) - parseFloat(oldVal[timeKey])) / parseFloat((interval*100)));
                var name = timeKey;
                if(timeKey == "idle"){
                    name = "CPU"        
                    diff = 100 - diff;
                }
                //console.log(timeKey + ":\t" + oldVal[timeKey] + "\t\t" + item[timeKey] + "\t\t" + diff);  
                result[cpuKey][name]=diff.toFixed(0);
            });
        });
        console.log(result);
        old=current;
    }, (interval * 1000));
    

    Outputs something like this on my 8-core every n-seconds

    [ { user: '82', nice: '0', sys: '18', CPU: '100', irq: '0' },
      { user: '1', nice: '0', sys: '1', CPU: '3', irq: '0' },
      { user: '1', nice: '0', sys: '1', CPU: '3', irq: '0' },
      { user: '9', nice: '0', sys: '2', CPU: '11', irq: '0' },
      { user: '1', nice: '0', sys: '0', CPU: '1', irq: '0' },
      { user: '1', nice: '0', sys: '1', CPU: '2', irq: '0' },
      { user: '1', nice: '0', sys: '2', CPU: '2', irq: '0' },
      { user: '1', nice: '0', sys: '2', CPU: '3', irq: '0' } ]
    

    Pushing this via socket.io into my Flow-Charts ;)

提交回复
热议问题