First of all, take a look at the specification of the method os.cpus() here. It shows how to call it and what is the return value. To measure the performance of the system, it is sufficient to take consecutive snapshots, compute a delta, sum all the data and compute the usage percentage like so:
//include the module var os = require('os'); //data collected on the previous tick var previous_cpu_usage; //[...] collect previous_cpu_usage //get the cpu data var cpu_usage = os.cpus(); //iterate through it for(var index = 0, len = cpu_usage.length; index < len; index++) { var cpu = cpu_usage[index], total = 0; var prev_cpu = previous_cpu_usage[index]; //for each type compute delta for(type in cpu.times){ total += cpu.times[type] - prev_cpu.times[type]; } //print it for now for(type in cpu.times){ if(type === "user" || type === "idle") console.log("\t", type, Math.round(100 * (cpu.times[type] - prev_cpu.times[type])/ total)); }
The idea is very simple. Here I'm not showing how to collect data consecutively. This can be done by the means of two timeouts: one that collect one data, then the second collect the second one and then in the callback of the second timeout data gets aggregated. I'm not showing the code exactly as it looks in my solution as it involves message passing through a (big) topology.
In the example shown, I'm printing the data that corresponds to user and idle time, since it's the one most people may be interested in. Anyways, with this code any percentage out of the returned data can be computed.
0 comments:
Post a Comment