vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 1 | $(function() { |
vinayakb | 29e62b5 | 2012-01-31 20:04:11 +0000 | [diff] [blame] | 2 | $('#tabs').tabs(); |
| 3 | |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 4 | var options = { |
| 5 | lines : { |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 6 | show : true, |
| 7 | fill : true |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 8 | }, |
| 9 | points : { |
| 10 | show : false |
| 11 | }, |
| 12 | xaxis : { |
| 13 | tickDecimals : 0, |
| 14 | tickSize : 0 |
| 15 | } |
| 16 | }; |
| 17 | |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 18 | function computeBandwidth(bytes, rrdPtr) { |
| 19 | return (bytes[(rrdPtr + 1) % bytes.length] - bytes[rrdPtr]) / 10; |
| 20 | } |
| 21 | |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 22 | function onDataReceived(data) { |
| 23 | var result = data.result; |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 24 | $('#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']; |
vinayakb | 4492225 | 2012-02-01 07:07:31 +0000 | [diff] [blame] | 29 | $('#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; |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 44 | 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']; |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 57 | 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']; |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 61 | 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 = []; |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 74 | var netPayloadReadBWArray = []; |
| 75 | var netPayloadWriteBWArray = []; |
| 76 | var netSignalingReadBWArray = []; |
| 77 | var netSignalingWriteBWArray = []; |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 78 | 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 | } |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 109 | 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 | } |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 115 | 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); |
vinayakb | 31970ed | 2012-01-31 18:57:48 +0000 | [diff] [blame] | 173 | |
| 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); |
vinayakb | 4e8fe23 | 2012-01-31 11:32:32 +0000 | [diff] [blame] | 189 | } |
| 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 | }); |