Skip to content

Commit d8d064a

Browse files
committed
Normalize Load over CPU count
Signed-off-by: Kirill Enykeev <enykeev@gmail.com>
1 parent f64bb8d commit d8d064a

File tree

1 file changed

+44
-10
lines changed

1 file changed

+44
-10
lines changed

node/stats.js

+44-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var rrdtool= "rrdtool";
77
/******************************************************************************/
88
// CONFIGURATION
99
// The root of rrd data, collected by collectd
10-
var collectDataRoot = __dirname + "/sampledata2";
10+
var collectDataRoot = __dirname + "/sampledata";
1111

1212

1313
/******************************************************************************/
@@ -56,7 +56,13 @@ var getCpuHeatmap = exports.getCpuHeatmap = function(req, res, next) {
5656
if (err) {
5757
next(err);
5858
} else {
59-
res.json(data);
59+
normalizeLoad(data, function (err, data) {
60+
if (err) {
61+
next(err);
62+
} else {
63+
res.json(data);
64+
}
65+
});
6066
}
6167
});
6268
}
@@ -199,22 +205,50 @@ var getInfoForAllHosts = function (path, keys, callback) {
199205
});
200206
}
201207

208+
var normalizeLoad = function (data, callback) {
209+
async.each(data, function (server, cb) {
210+
var dir = collectDataRoot + '/' + server[0]
211+
var str = "cpu-";
212+
213+
fs.readdir(dir, function (err, filenames) {
214+
if (err) {
215+
cb(err);
216+
} else {
217+
var numberOfCpus = filenames.filter(function (e) { return e.slice(0, str.length) === str;}).length;
218+
server[1] = server[1] / numberOfCpus;
219+
cb();
220+
}
221+
});
222+
}, function (err) {
223+
callback(err, data)
224+
});
225+
};
226+
202227
/* Quick & dirty testing */
203228
// infoRRD("memory/memory-active.rrd", "localhost", function(info) {
204229
// console.log(info);
205230
// });
206-
var resmock = { json: function (data) {
207-
console.log(JSON.stringify(data, null, 2));
208-
}};
209-
var nextmock = function(err) { console.log(err); }
210-
var reqmock = { params: { id:"localhost"}, query:{from: 1370556816, to: 1370643216, r:1000} };
211-
getMemoryHeatmap(reqmock, resmock, nextmock);
231+
// var resmock = { json: function (data) {
232+
// console.log(JSON.stringify(data, null, 2));
233+
// }};
234+
// var nextmock = function(err) { console.log(err); }
235+
// var reqmock = { params: { id:"localhost"}, query:{from: 1370556816, to: 1370643216, r:1000} };
236+
// getMemoryHeatmap(reqmock, resmock, nextmock);
212237

213238
// getInfoForAllHosts("load/load.rrd", ["ds[shortterm].value", "last_update"], function(err, data) {
214239
// if (!err) {
215-
// console.log(data);
216-
// console.log(data.length);
240+
// normalizeLoad(data, function (err, data) {
241+
// if (err) {
242+
// console.log("ERROR: ", err);
243+
// } else {
244+
// console.log(data);
245+
// }
246+
// });
217247
// } else {
218248
// console.log("ERROR: ", err);
219249
// }
220250
// });
251+
252+
// fs.readdir(collectDataRoot, function (err, filenames) {
253+
// console.log(filenames);
254+
// });

0 commit comments

Comments
 (0)