-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathapp.js
More file actions
77 lines (59 loc) · 1.77 KB
/
app.js
File metadata and controls
77 lines (59 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var profiler = require('v8-profiler');
var io = require('socket.io').listen(3000);
var exec = require('child_process').exec;
io.configure(function() {
io.set('log level', 1);
var transport = process.argv.length >= 2 ? process.argv[2] : null;
if (transport) {
io.set('transports', [transport]);
}
});
// command to read process consumed memory and cpu time
var getCpuCommand = "ps -p " + process.pid + " -u | grep " + process.pid;
var users = 0;
var countReceived = 0;
var countSended = 0;
function roundNumber(num, precision) {
return parseFloat(Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision));
}
setInterval(function() {
var auxReceived = roundNumber(countReceived / users, 1)
var msuReceived = (users > 0 ? auxReceived : 0);
var auxSended = roundNumber(countSended / users, 1)
var msuSended = (users > 0 ? auxSended : 0);
// call a system command (ps) to get current process resources utilization
var child = exec(getCpuCommand, function(error, stdout, stderr) {
var s = stdout.split(/\s+/);
var cpu = s[2];
var memory = s[3];
var l = [
'U: ' + users,
'MR/S: ' + countReceived,
'MS/S: ' + countSended,
'MR/S/U: ' + msuReceived,
'MS/S/U: ' + msuSended,
'CPU: ' + cpu,
'Mem: ' + memory
];
console.log(l.join(',\t'));
countReceived = 0;
countSended = 0;
});
}, 1000);
io.sockets.on('connection', function(socket) {
users++;
socket.on('message', function(message) {
socket.send(message);
countReceived++;
countSended++;
});
socket.on('broadcast', function(message) {
countReceived++;
io.sockets.emit('broadcast', message);
countSended += users;
socket.emit('broadcastOk');
});
socket.on('disconnect', function() {
users--;
})
});