blob: 1847b3278cd4117b41f8f276e6a3f587686152ac [file] [log] [blame]
vinayakb4e8fe232012-01-31 11:32:32 +00001$(function() {
vinayakb29e62b52012-01-31 20:04:11 +00002 $('#tabs').tabs();
3
vinayakb4e8fe232012-01-31 11:32:32 +00004 var options = {
5 lines : {
vinayakb31970ed2012-01-31 18:57:48 +00006 show : true,
7 fill : true
vinayakb4e8fe232012-01-31 11:32:32 +00008 },
9 points : {
10 show : false
11 },
12 xaxis : {
13 tickDecimals : 0,
14 tickSize : 0
15 }
16 };
17
vinayakb31970ed2012-01-31 18:57:48 +000018 function computeBandwidth(bytes, rrdPtr) {
19 return (bytes[(rrdPtr + 1) % bytes.length] - bytes[rrdPtr]) / 10;
20 }
21
vinayakb4e8fe232012-01-31 11:32:32 +000022 function onDataReceived(data) {
23 var result = data.result;
vinayakb31970ed2012-01-31 18:57:48 +000024 $('#node-id')[0].innerHTML = result['node-id'];
25 $('#arch')[0].innerHTML = result['arch'];
26 $('#os-name')[0].innerHTML = result['os-name'];
27 $('#os-version')[0].innerHTML = result['os-version'];
28 $('#num-processors')[0].innerHTML = result['num-processors'];
vinayakb44922252012-02-01 07:07:31 +000029 $('#vm-name')[0].innerHTML = result['vm-name'];
30 $('#vm-version')[0].innerHTML = result['vm-version'];
31 $('#vm-vendor')[0].innerHTML = result['vm-vendor'];
32 $('#classpath')[0].innerHTML = result['classpath'];
33 $('#library-path')[0].innerHTML = result['library-path'];
34 $('#boot-classpath')[0].innerHTML = result['boot-classpath'];
35 var argsHTML = "";
36 var args = result['input-arguments'];
37 for ( var i = 0; i < args.length; ++i) {
38 if (argsHTML != "") {
39 argsHTML += "<br/>";
40 }
41 argsHTML += "<span>" + args[i] + "</span>";
42 }
43 $('#input-arguments')[0].innerHTML = argsHTML;
vinayakb4e8fe232012-01-31 11:32:32 +000044 var sysLoad = result['system-load-averages'];
45 var heapUsageInitSizes = result['heap-init-sizes'];
46 var heapUsageUsedSizes = result['heap-used-sizes'];
47 var heapUsageCommittedSizes = result['heap-committed-sizes'];
48 var heapUsageMaxSizes = result['heap-max-sizes'];
49 var nonheapUsageInitSizes = result['nonheap-init-sizes'];
50 var nonheapUsageUsedSizes = result['nonheap-used-sizes'];
51 var nonheapUsageCommittedSizes = result['nonheap-committed-sizes'];
52 var nonheapUsageMaxSizes = result['nonheap-max-sizes'];
53 var threadCounts = result['thread-counts'];
54 var peakThreadCounts = result['peak-thread-counts'];
55 var gcCollectionCounts = result['gc-collection-counts'];
56 var gcCollectionTimes = result['gc-collection-times'];
vinayakb31970ed2012-01-31 18:57:48 +000057 var netPayloadBytesRead = result['net-payload-bytes-read'];
58 var netPayloadBytesWritten = result['net-payload-bytes-written'];
59 var netSignalingBytesRead = result['net-signaling-bytes-read'];
60 var netSignalingBytesWritten = result['net-signaling-bytes-written'];
vinayakb4e8fe232012-01-31 11:32:32 +000061 var sysLoadArray = [];
62 var heapUsageInitSizesArray = [];
63 var heapUsageUsedSizesArray = [];
64 var heapUsageCommittedSizesArray = [];
65 var heapUsageMaxSizesArray = [];
66 var nonheapUsageInitSizesArray = [];
67 var nonheapUsageUsedSizesArray = [];
68 var nonheapUsageCommittedSizesArray = [];
69 var nonheapUsageMaxSizesArray = [];
70 var threadCountsArray = [];
71 var peakThreadCountsArray = [];
72 var gcCollectionCountsArray = [];
73 var gcCollectionTimesArray = [];
vinayakb31970ed2012-01-31 18:57:48 +000074 var netPayloadReadBWArray = [];
75 var netPayloadWriteBWArray = [];
76 var netSignalingReadBWArray = [];
77 var netSignalingWriteBWArray = [];
vinayakb4e8fe232012-01-31 11:32:32 +000078 var gcChartsDiv = document.getElementById('gc-charts');
79 for ( var i = 0; i < gcCollectionCounts.length; ++i) {
80 gcCollectionCountsArray.push([]);
81 gcCollectionTimesArray.push([]);
82 var gcCollectionCountDiv = document.createElement('div');
83 gcCollectionCountDiv.id = 'gc-collection-count-' + i;
84 gcCollectionCountDiv.style = "jqplot-target time-chart";
85 gcChartsDiv.appendChild(gcCollectionCountDiv);
86 var gcCollectionTimeDiv = document.createElement('div');
87 gcCollectionTimeDiv.id = 'gc-collection-time-' + i;
88 gcChartsDiv.appendChild(gcCollectionTimeDiv);
89 }
90 var rrdPtr = result['rrd-ptr'];
91 for ( var i = 0; i < sysLoad.length; ++i) {
92 sysLoadArray.push([ i, sysLoad[rrdPtr] ]);
93 heapUsageInitSizesArray.push([ i, heapUsageInitSizes[rrdPtr] / (1024 * 1024) ]);
94 heapUsageUsedSizesArray.push([ i, heapUsageUsedSizes[rrdPtr] / (1024 * 1024) ]);
95 heapUsageCommittedSizesArray.push([ i, heapUsageCommittedSizes[rrdPtr] / (1024 * 1024) ]);
96 heapUsageMaxSizesArray.push([ i, heapUsageMaxSizes[rrdPtr] / (1024 * 1024) ]);
97 nonheapUsageInitSizesArray.push([ i, nonheapUsageInitSizes[rrdPtr] / (1024 * 1024) ]);
98 nonheapUsageUsedSizesArray.push([ i, nonheapUsageUsedSizes[rrdPtr] / (1024 * 1024) ]);
99 nonheapUsageCommittedSizesArray.push([ i, nonheapUsageCommittedSizes[rrdPtr] / (1024 * 1024) ]);
100 nonheapUsageMaxSizesArray.push([ i, nonheapUsageMaxSizes[rrdPtr] / (1024 * 1024) ]);
101 threadCountsArray.push([ i, threadCounts[rrdPtr] ]);
102 peakThreadCountsArray.push([ i, peakThreadCounts[rrdPtr] ]);
103 for ( var j = 0; j < gcCollectionCounts.length; ++j) {
104 gcCollectionCountsArray[j].push([ i, gcCollectionCounts[j][rrdPtr] ]);
105 }
106 for ( var j = 0; j < gcCollectionTimes.length; ++j) {
107 gcCollectionTimesArray[j].push([ i, gcCollectionTimes[j][rrdPtr] ]);
108 }
vinayakb31970ed2012-01-31 18:57:48 +0000109 if (i < sysLoad.length - 1) {
110 netPayloadReadBWArray.push([ i, computeBandwidth(netPayloadBytesRead, rrdPtr) ]);
111 netPayloadWriteBWArray.push([ i, computeBandwidth(netPayloadBytesWritten, rrdPtr) ]);
112 netSignalingReadBWArray.push([ i, computeBandwidth(netSignalingBytesRead, rrdPtr) ]);
113 netSignalingWriteBWArray.push([ i, computeBandwidth(netSignalingBytesWritten, rrdPtr) ]);
114 }
vinayakb4e8fe232012-01-31 11:32:32 +0000115 rrdPtr = (rrdPtr + 1) % sysLoad.length;
116 }
117
118 $.plot($('#system-load-chart'), [ {
119 label : 'System Load',
120 data : sysLoadArray
121 } ], options);
122
123 var gcNames = result['gc-names'];
124 for ( var i = 0; i < gcCollectionCounts.length; ++i) {
125 $('#gc-collection-count-' + i).addClass("time-chart");
126 $.plot($('#gc-collection-count-' + i), [ {
127 label : gcNames[i] + ' Collection Count',
128 data : gcCollectionCountsArray[i]
129 } ], options);
130
131 $('#gc-collection-time-' + i).addClass("time-chart");
132 $.plot($('#gc-collection-time-' + i), [ {
133 label : gcNames[i] + ' Collection Time (ms)',
134 data : gcCollectionTimesArray[i]
135 } ], options);
136 }
137
138 $.plot($('#heap-usage-chart'), [ {
139 label : 'Heap Usage Initial Size (MB)',
140 data : heapUsageInitSizesArray
141 }, {
142 label : 'Heap Usage Used Size (MB)',
143 data : heapUsageUsedSizesArray
144 }, {
145 label : 'Heap Usage Committed Size (MB)',
146 data : heapUsageCommittedSizesArray
147 }, {
148 label : 'Heap Usage Max Size (MB)',
149 data : heapUsageMaxSizesArray
150 } ], options);
151
152 $.plot($('#nonheap-usage-chart'), [ {
153 label : 'Non-Heap Usage Initial Size (MB)',
154 data : nonheapUsageInitSizesArray
155 }, {
156 label : 'Non-Heap Usage Used Size (MB)',
157 data : nonheapUsageUsedSizesArray
158 }, {
159 label : 'Non-Heap Usage Committed Size (MB)',
160 data : nonheapUsageCommittedSizesArray
161 }, {
162 label : 'Non-Heap Usage Max Size (MB)',
163 data : nonheapUsageMaxSizesArray
164 } ], options);
165
166 $.plot($('#thread-chart'), [ {
167 label : 'Thread Count',
168 data : threadCountsArray
169 }, {
170 label : 'Peak Thread Count',
171 data : peakThreadCountsArray
172 } ], options);
vinayakb31970ed2012-01-31 18:57:48 +0000173
174 $.plot($('#net-payload-bandwidth'), [ {
175 label : 'Payload Read Bandwidth (bytes/sec)',
176 data : netPayloadReadBWArray
177 }, {
178 label : 'Payload Write Bandwidth (bytes/sec)',
179 data : netPayloadWriteBWArray
180 } ], options);
181
182 $.plot($('#net-signaling-bandwidth'), [ {
183 label : 'Signaling Read Bandwidth (bytes/sec)',
184 data : netSignalingReadBWArray
185 }, {
186 label : 'Signaling Write Bandwidth (bytes/sec)',
187 data : netSignalingWriteBWArray
188 } ], options);
vinayakb4e8fe232012-01-31 11:32:32 +0000189 }
190
191 function fetchData() {
192 $.ajax({
193 url : '/rest/nodes/' + $.getURLParam('node-id'),
194 method : 'GET',
195 dataType : 'json',
196 success : onDataReceived
197 });
198
199 setTimeout(fetchData, 10000);
200 }
201
202 fetchData();
203});