report.html.template 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <!-- Le styles -->
  5. <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet">
  6. <link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet">
  7. <link href="http://twitter.github.com/bootstrap/assets/js/google-code-prettify/prettify.css" rel="stylesheet">
  8. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  9. <script>
  10. var chart_data = $REPORT_JSON;
  11. </script>
  12. <script type="text/javascript">
  13. google.load("visualization", "1", {packages:["corechart"]});
  14. google.setOnLoadCallback(draw_charts);
  15. function draw_charts() {
  16. //draw_pie_chart('database_memory', chart_data.aggregates.database_memory, 'Database Number', 'Size in Bytes', 'Memory Usage by Database')
  17. draw_pie_chart('type_memory', chart_data.aggregates.type_memory, 'Data Type', 'Total Size in Bytes', 'Memory Usage by Data Type')
  18. draw_column_chart('type_count', chart_data.aggregates.type_count, 'Data Type', 'Keys', 'Number of Keys by Data Type')
  19. draw_pie_chart('encoding_memory', chart_data.aggregates.encoding_memory, 'Data Encoding', 'Total Size in Bytes', 'Memory Usage by Data Encoding')
  20. draw_column_chart('encoding_count', chart_data.aggregates.encoding_count, 'Data Encoding', 'Keys', 'Number of Keys by Data Encoding')
  21. draw_column_chart('string_memory', chart_data.histograms.string_memory, 'Memory in Bytes', 'Frequency', 'Memory in bytes v/s Frequency')
  22. draw_column_chart('string_length', chart_data.histograms.string_length, 'Length of String', 'Frequency', 'String Length histogram')
  23. draw_scatter_chart('string_memory_by_length', chart_data.scatters.string_memory_by_length, 'Memory in Bytes', 'Length of String', 'Memory Usage v/s Length of String')
  24. draw_column_chart('list_memory', chart_data.histograms.list_memory, 'Memory in Bytes', 'Frequency', 'List Memory Usage Histogram')
  25. draw_column_chart('list_length', chart_data.histograms.list_length, 'Length of List', 'Frequency', 'List Length Histogram')
  26. draw_scatter_chart('list_memory_by_length', chart_data.scatters.list_memory_by_length, 'Memory in Bytes', 'Length of List', 'Memory Usage v/s Length of List')
  27. draw_column_chart('hash_memory', chart_data.histograms.hash_memory, 'Memory in Bytes', 'Frequency', 'Hash Memory Usage Histogram')
  28. draw_column_chart('hash_length', chart_data.histograms.hash_length, 'Length of Hash', 'Frequency', 'Hash Length Histogram')
  29. draw_scatter_chart('hash_memory_by_length', chart_data.scatters.hash_memory_by_length, 'Memory in Bytes', 'Length of Hash', 'Memory Usage v/s Length of Hash')
  30. draw_column_chart('hash_memory', chart_data.histograms.hash_memory, 'Memory in Bytes', 'Frequency', 'Hash Memory Usage Histogram')
  31. draw_column_chart('hash_length', chart_data.histograms.hash_length, 'Length of Hash', 'Frequency', 'Hash Length Histogram')
  32. draw_scatter_chart('hash_memory_by_length', chart_data.scatters.hash_memory_by_length, 'Memory in Bytes', 'Length of Hash', 'Memory Usage v/s Length of Hash')
  33. }
  34. function draw_scatter_chart(id, chart_data, xlabel, ylabel, title){
  35. draw_chart_internal('scatter', id, chart_data, xlabel, ylabel, title)
  36. }
  37. function draw_column_chart(id, chart_data, xlabel, ylabel, title){
  38. draw_chart_internal('column', id, chart_data, xlabel, ylabel, title)
  39. }
  40. function draw_pie_chart(id, chart_data, xlabel, ylabel, title){
  41. draw_chart_internal('pie', id, chart_data, xlabel, ylabel, title)
  42. }
  43. function draw_chart_internal(type, id, chart_data, xlabel, ylabel, title ) {
  44. if(chart_data) {
  45. var data = new google.visualization.DataTable();
  46. if(type == 'scatter') {
  47. data.addColumn('number', xlabel);
  48. }
  49. else {
  50. data.addColumn('string', xlabel);
  51. }
  52. data.addColumn('number', ylabel);
  53. if(type == 'scatter') {
  54. data.addRows(chart_data);
  55. }
  56. else {
  57. var rows=[]
  58. for (var key in chart_data) {
  59. if(chart_data.hasOwnProperty(key)) {
  60. value = chart_data[key]
  61. rows.push([key, value])
  62. }
  63. }
  64. data.addRows(rows);
  65. }
  66. var options = {
  67. title: title
  68. };
  69. var chart;
  70. if (type == 'pie') {
  71. chart = new google.visualization.PieChart(document.getElementById(id));
  72. }
  73. else if (type == 'column') {
  74. chart = new google.visualization.ColumnChart(document.getElementById(id));
  75. }
  76. else if (type == 'scatter') {
  77. chart = new google.visualization.ScatterChart(document.getElementById(id));
  78. }
  79. else {
  80. throw Exception('Invalid chart type ' + type)
  81. }
  82. chart.draw(data, options);
  83. }
  84. }
  85. </script>
  86. </head>
  87. <body>
  88. <h1>Redis Memory Distribution for dump.rdb</h1>
  89. <div class="container">
  90. <!--
  91. <div class="row">
  92. <div class="span6" id="database_memory">
  93. </div>
  94. <div class="span6" id="">
  95. </div>
  96. </div>
  97. -->
  98. <h2>Memory Usage By Data Type and Data Encoding</h2>
  99. <div class="row">
  100. <div class="span6" id="type_memory">
  101. </div>
  102. <div class="span6" id="type_count">
  103. </div>
  104. </div>
  105. <div class="row">
  106. <div class="span6" id="encoding_memory">
  107. </div>
  108. <div class="span6" id="encoding_count">
  109. </div>
  110. </div>
  111. <h2>Memory Usage for Strings</h2>
  112. <div class="row">
  113. <div class="span6" id="string_memory">
  114. </div>
  115. <div class="span6" id="string_length">
  116. </div>
  117. </div>
  118. <div class="row">
  119. <div class="span3">&nbsp;</div>
  120. <div class="span6" id="string_memory_by_length">
  121. </div>
  122. <div class="span3">&nbsp;</div>
  123. </div>
  124. <h2>Memory Usage for Lists</h2>
  125. <div class="row">
  126. <div class="span6" id="list_memory">
  127. </div>
  128. <div class="span6" id="list_length">
  129. </div>
  130. </div>
  131. <div class="row">
  132. <div class="span3">&nbsp;</div>
  133. <div class="span6" id="list_memory_by_length">
  134. </div>
  135. <div class="span3">&nbsp;</div>
  136. </div>
  137. <h2>Memory Usage for Sets</h2>
  138. <div class="row">
  139. <div class="span6" id="set_memory">
  140. </div>
  141. <div class="span6" id="set_length">
  142. </div>
  143. </div>
  144. <div class="row">
  145. <div class="span3">&nbsp;</div>
  146. <div class="span6" id="set_memory_by_length">
  147. </div>
  148. <div class="span3">&nbsp;</div>
  149. </div>
  150. <h2>Memory Usage for Sorted Sets</h2>
  151. <div class="row">
  152. <div class="span6" id="sortedset_memory">
  153. </div>
  154. <div class="span6" id="sortedset_length">
  155. </div>
  156. </div>
  157. <div class="row">
  158. <div class="span3">&nbsp;</div>
  159. <div class="span6" id="sortedset_memory_by_length">
  160. </div>
  161. <div class="span3">&nbsp;</div>
  162. </div>
  163. <h2>Memory Usage for Hashes</h2>
  164. <div class="row">
  165. <div class="span6" id="hash_memory">
  166. </div>
  167. <div class="span6" id="hash_length">
  168. </div>
  169. </div>
  170. <div class="row">
  171. <div class="span3">&nbsp;</div>
  172. <div class="span6" id="hash_memory_by_length">
  173. </div>
  174. <div class="span3">&nbsp;</div>
  175. </div>
  176. <div>
  177. </body>
  178. </html>