Move to async lib for processing cpu data

Still doesn’t fix the page lag which seems to be due to the rendering
of the graphs.
This commit is contained in:
Dane Everitt 2016-02-25 23:57:53 -05:00
parent ceb2ef49ae
commit 8190f08b75
4 changed files with 61 additions and 39 deletions

View file

@ -30,6 +30,8 @@ SOFTWARE.
### Credits
Animate.css - [license](https://github.com/daneden/animate.css/blob/master/LICENSE) - [homepage](http://daneden.github.io/animate.css/)
Async.js - [license](https://github.com/caolan/async/blob/master/LICENSE) - [homepage](https://github.com/caolan/async/)
BinaryJS - [license](https://github.com/binaryjs/binaryjs/blob/master/LICENSE) - [homepage](http://binaryjs.com)
Bootstrap - [license](https://github.com/twbs/bootstrap/blob/master/LICENSE) - [homepage](http://getbootstrap.com)

2
public/js/async.min.js vendored Executable file

File diff suppressed because one or more lines are too long

1
public/js/async.min.map Executable file

File diff suppressed because one or more lines are too long

View file

@ -28,6 +28,7 @@
{!! Theme::css('css/metricsgraphics.css') !!}
{!! Theme::js('js/d3.min.js') !!}
{!! Theme::js('js/metricsgraphics.min.js') !!}
{!! Theme::js('js/async.min.js') !!}
@endsection
@section('content')
@ -167,6 +168,7 @@ $(window).load(function () {
target: document.getElementById('chart_memory'),
x_accessor: 'date',
y_accessor: 'memory',
animate_on_load: false,
y_rug: true,
area: false,
};
@ -200,6 +202,7 @@ $(window).load(function () {
y_accessor: 'cpu',
aggregate_rollover: true,
missing_is_hidden: true,
animate_on_load: false,
area: false,
};
@ -229,47 +232,61 @@ $(window).load(function () {
'cpu': ({{ $server->cpu }} > 0) ? parseFloat(((proc.data.cpu.total / {{ $server->cpu }}) * 100).toFixed(3).toString()) : proc.data.cpu.total
});
async.waterfall([
function (callback) {
// Remove blank values from listing
var activeCores = [];
for (i = 0, length = proc.data.cpu.cores.length; i < length; i++) {
async.forEachOf(proc.data.cpu.cores, function(inner, i, eachCallback) {
if (proc.data.cpu.cores[i] > 0) {
activeCores.push(proc.data.cpu.cores[i]);
}
}
return eachCallback();
}, function () {
return callback(null, activeCores);
});
},
function (active, callback) {
var modifedActiveCores = { '0': 0 };
for (i = 0, length = activeCores.length; i < length; i++) {
async.forEachOf(active, function (inner, i, eachCallback) {
if (i > 7) {
modifedActiveCores['0'] = modifedActiveCores['0'] + activeCores[i];
modifedActiveCores['0'] = modifedActiveCores['0'] + active[i];
} else {
if (activeChartArrays.indexOf(i) < 0) {
activeChartArrays.push(i);
if (activeChartArrays.indexOf(i) < 0) activeChartArrays.push(i);
modifedActiveCores[i] = active[i];
}
modifedActiveCores[i] = activeCores[i];
}
}
for (i = 0, length = activeChartArrays.length; i < length; i++) {
return eachCallback();
}, function () {
return callback(null, modifedActiveCores);
});
},
function (modified, callback) {
async.forEachOf(activeChartArrays, function (inner, i, eachCallback) {
if (typeof cpuGraphData[(i + 1)] === 'undefined') {
cpuGraphData[(i + 1)] = [{
'date': curDate,
'cpu': ({{ $server->cpu }} > 0) ? parseFloat((((modifedActiveCores[i] || 0)/ {{ $server->cpu }}) * 100).toFixed(3).toString()) : modifedActiveCores[i] || null
'cpu': ({{ $server->cpu }} > 0) ? parseFloat((((modified[i] || 0)/ {{ $server->cpu }}) * 100).toFixed(3).toString()) : modified[i] || null
}];
} else {
if (typeof cpuGraphData[(i + 1)][20] !== 'undefined') {
cpuGraphData[(i + 1)].shift();
}
if (typeof cpuGraphData[(i + 1)][20] !== 'undefined') cpuGraphData[(i + 1)].shift();
cpuGraphData[(i + 1)].push({
'date': curDate,
'cpu': ({{ $server->cpu }} > 0) ? parseFloat((((modifedActiveCores[i] || 0)/ {{ $server->cpu }}) * 100).toFixed(3).toString()) : modifedActiveCores[i] || null
'cpu': ({{ $server->cpu }} > 0) ? parseFloat((((modified[i] || 0)/ {{ $server->cpu }}) * 100).toFixed(3).toString()) : modified[i] || null
});
}
}
return eachCallback();
}, function () {
return callback();
});
},
function (callback) {
cpuGraphSettings.data = (showOnlyTotal === true) ? cpuGraphData[0] : cpuGraphData;
return callback();
},
], function () {
MG.data_graphic(memoryGraphSettings);
MG.data_graphic(cpuGraphSettings);
});
});
// Socket Recieves New Query
socket.on('query', function (data){