Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml @ 12551

Last change on this file since 12551 was 12551, checked in by dglaser, 9 years ago

#2388:

HeuristicLab.Services.Hive.DataAccess-3.3:

  • updated database schema
  • updated sql scripts
  • updated HiveStatisticsGenerator

HeuristicLab.Services.WebApp-3.3:

  • merged from trunk

HeuristicLab.Services.WebApp.Status-3.3:

  • updated data api controller

HeuristicLab.Services.WebApp.Statistics-3.3:

  • added exception page
  • improved jobs, clients, users and groups page
File size: 19.7 KB
Line 
1<header class="view-header">
2    <ul class="nav nav-list nav-list-topbar pull-left">
3        <li class="active">
4            <a ng-href="#/status">Status</a>
5        </li>
6        <li>
7            <a ng-href="#/status/history">History</a>
8        </li>
9    </ul>
10</header>
11
12<div class="default-view-container">
13<div class="row">
14    <div class="col-lg-3 col-md-6">
15        <div class="panel panel-default">
16            <div class="panel-heading">
17                <h3 class="panel-title">Cores</h3>
18            </div>
19            <div class="panel-body">
20                <div class="text-center">
21                    <knob knob-data="core.knobData" knob-options="knobOptions"></knob>
22                </div>
23                <table class="table table-no-border table-condensed table-auto-width table-content">
24                    <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
25                        <td class="text-left">
26                            Total:
27                        </td>
28                        <td class="text-right">{{status.CoreStatus.TotalCores | number}}</td>
29                    </tr>
30                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
31                        <td class="text-left">Active:</td>
32                        <td class="text-right">{{status.CoreStatus.ActiveCores | number}}</td>
33                    </tr>
34                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
35                        <td class="text-left">Calculating:</td>
36                        <td class="text-right">{{status.CoreStatus.CalculatingCores | number}}</td>
37                    </tr>
38                </table>
39            </div>
40        </div>
41    </div>
42
43    <div class="col-lg-3 col-md-6">
44        <div class="panel panel-default">
45            <div class="panel-heading">
46                <h3 class="panel-title">CPU Utilization</h3>
47            </div>
48            <div class="panel-body">
49                <div class="text-center">
50                    <knob knob-data="cpu.knobData" knob-options="knobOptions"></knob>
51                </div>
52                <table class="table table-no-border table-condensed table-auto-width table-content">
53                    <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
54                        <td class="text-left">Total:</td>
55                        <td class="text-right">{{status.CpuUtilizationStatus.TotalCpuUtilization | number: 2}} %</td>
56                    </tr>
57                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
58                        <td class="text-left">Active:</td>
59                        <td class="text-right">{{status.CpuUtilizationStatus.ActiveCpuUtilization | number: 2}} %</td>
60                    </tr>
61                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
62                        <td class="text-left">Calculating:</td>
63                        <td class="text-right">{{status.CpuUtilizationStatus.CalculatingCpuUtilization | number: 2}} %</td>
64                    </tr>
65                </table>
66            </div>
67        </div>
68    </div>
69
70    <div class="col-lg-3 col-md-6">
71        <div class="panel panel-default">
72            <div class="panel-heading">
73                <h3 class="panel-title">Memory</h3>
74            </div>
75            <div class="panel-body">
76                <div class="text-center">
77                    <knob knob-data="memory.knobData" knob-options="knobOptions"></knob>
78                </div>
79                <table class="table table-no-border table-condensed table-auto-width table-content">
80                    <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
81                        <td class="text-left">Total:</td>
82                        <td class="text-right">{{status.MemoryStatus.TotalMemory | kbToGB}} GB</td>
83                    </tr>
84                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
85                        <td class="text-left">Active:</td>
86                        <td class="text-right">{{status.MemoryStatus.ActiveMemory | kbToGB}} GB</td>
87                    </tr>
88                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
89                        <td class="text-left">Calculating:</td>
90                        <td class="text-right">{{status.MemoryStatus.CalculatingMemory | kbToGB}} GB</td>
91                    </tr>
92                </table>
93            </div>
94        </div>
95    </div>
96
97    <div class="col-lg-3 col-md-6">
98        <div class="panel panel-default">
99            <div class="panel-heading">
100                <h3 class="panel-title">Tasks</h3>
101            </div>
102            <div class="panel-body">
103                <table class="table table-no-border table-condensed table-auto-width table-content">
104                    <tr>
105                        <td class="text-left">Total:</td>
106                        <td class="text-right">{{tasks.WaitingTasks + tasks.CalculatingTasks | number}}</td>
107                    </tr>
108                    <tr>
109                        <td class="text-left">Waiting:</td>
110                        <td class="text-right">{{tasks.WaitingTasks | number}}</td>
111                    </tr>
112                    <tr>
113                        <td class="text-left">Calculating:</td>
114                        <td class="text-right">{{tasks.CalculatingTasks | number}}</td>
115                    </tr>
116                </table>
117            </div>
118        </div>
119    </div>
120</div>
121
122<div class="row">
123    <div class="col-lg-12">
124        <div class="panel panel-default">
125            <div class="panel-heading">
126                <h3 class="panel-title">Status Overview</h3>
127            </div>
128            <div class="panel-body">
129                <div class="row">
130                    <div class="col-md-6">
131                        <table class="table table-no-border table-condensed table-auto-width table-content">
132                            <tr>
133                                <td class="text-left">Current Average Waiting Time:</td>
134                                <td class="text-right">{{status.TimeStatus.AvgWaitingTime | toTimespan}}</td>
135                            </tr>
136                            <tr>
137                                <td class="text-left">Total CPU Time:</td>
138                                <td class="text-right">{{status.TimeStatus.TotalCpuTime | toTimespan}}</td>
139                            </tr>
140                            <tr>
141                                <td class="text-left">Since:</td>
142                                <td class="text-right">{{status.TimeStatus.BeginDate | toDate}}</td>
143                            </tr>
144                        </table>
145                    </div>
146                    <div class="col-md-6">
147                        <table class="table table-no-border table-condensed table-auto-width table-content">
148                            <tr>
149                                <td class="text-left">Minimum Calculating Time:</td>
150                                <td class="text-right">{{status.TimeStatus.MinCalculatingTime | toTimespan}}</td>
151                            </tr>
152                            <tr>
153                                <td class="text-left">Maximum Calculating Time:</td>
154                                <td class="text-right">{{status.TimeStatus.MaxCalculatingTime | toTimespan}}</td>
155                            </tr>
156                            <tr>
157                                <td class="text-left">Average Calculating Time:</td>
158                                <td class="text-right">{{status.TimeStatus.AvgCalculatingTime | toTimespan}}</td>
159                            </tr>
160                            <tr>
161                                <td class="text-left">Standard Deviation Calculating Time:</td>
162                                <td class="text-right">{{status.TimeStatus.StandardDeviationCalculatingTime | toTimespan}}</td>
163                            </tr>
164                        </table>
165                    </div>
166                </div>
167            </div>
168        </div>
169    </div>
170</div>
171
172<div class="row">
173    <div class="col-lg-12">
174        <div class="panel panel-default">
175            <div class="panel-heading">
176                <h3 class="panel-title">CPU Utilization Chart</h3>
177            </div>
178            <div class="panel-body">
179                <flot dataset="cpu.series" options="chartOptions"></flot>
180            </div>
181        </div>
182    </div>
183</div>
184
185<div class="row">
186    <div class="col-lg-12">
187        <div class="panel panel-default">
188            <div class="panel-heading">
189                <h3 class="panel-title">Core Chart</h3>
190            </div>
191            <div class="panel-body">
192                <flot dataset="core.series" options="fillChartOptions"></flot>
193            </div>
194        </div>
195    </div>
196</div>
197
198<div class="row">
199    <div class="col-lg-12">
200        <div class="panel panel-default">
201            <div class="panel-heading">
202                <h3 class="panel-title">Memory Chart</h3>
203            </div>
204            <div class="panel-body">
205                <flot dataset="memory.series" options="fillChartOptions"></flot>
206            </div>
207        </div>
208    </div>
209</div>
210
211<div class="row">
212    <div class="col-lg-12">
213        <div class="panel panel-default">
214            <div class="panel-heading">
215                <h3 class="panel-title">Tasks by User</h3>
216            </div>
217            <div class="panel-body">
218                <table class="table table-hover">
219                    <thead>
220                    <tr>
221                        <th>Username</th>
222                        <th>Calculating Tasks</th>
223                        <th>Waiting Tasks</th>
224                    </tr>
225                    </thead>
226                    <tr ng-repeat="task in status.TasksStatus">
227                        <td>{{task.User.Name}}</td>
228                        <td>{{task.CalculatingTasks | number}}</td>
229                        <td>{{task.WaitingTasks | number}}</td>
230                    </tr>
231                    <tr ng-hide="status.TasksStatus.length">
232                        <td colspan="3" class="text-center">
233                            There are no waiting or calculating tasks available!
234                        </td>
235                    </tr>
236                </table>
237            </div>
238        </div>
239    </div>
240</div>
241
242<div class="row">
243    <div class="col-lg-12">
244        <div class="panel panel-default">
245            <div class="panel-heading">
246                <h3 class="panel-title">
247                    <a data-toggle="collapse" data-target="#collapseActiveCalculatingSlaves"
248                       ng-href="#/status">
249                        Active Calculating Slaves
250                    </a>
251                </h3>
252            </div>
253            <div id="collapseActiveCalculatingSlaves"
254                 class="panel-collapse collapse in">
255                <div class="panel-body">
256                    <table class="table table-hover">
257                        <thead>
258                        <tr>
259                            <th ng-click="activeCalculatingSlavesOrderColumn='Slave.Name';
260                                                  activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
261                                Slave
262                            </th>
263                            <th ng-click="activeCalculatingSlavesOrderColumn='CpuUtilization';
264                                                  activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
265                                CPU Utilization
266                            </th>
267                            <th ng-click="activeCalculatingSlavesOrderColumn='Cores';
268                                                  activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
269                                Cores
270                            </th>
271                            <th ng-click="activeCalculatingSlavesOrderColumn='Memory';
272                                                  activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
273                                Memory
274                            </th>
275                        </tr>
276                        </thead>
277                        <tr ng-repeat="slave in activeCalculatingSlaves = (status.SlavesStatus
278                                | filter: {
279                                    IsAllowedToCalculate: true,
280                                    State: 'Calculating'
281                                  }
282                                | orderBy: activeCalculatingSlavesOrderColumn:activeCalculatingSlavesReverseSort)">
283                            <td>{{slave.Slave.Name}}</td>
284                            <td>{{slave.CpuUtilization | number: 2}} %</td>
285                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
286                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
287                        </tr>
288                        <tr ng-hide="activeCalculatingSlaves.length">
289                            <td colspan="4" class="text-center">
290                                There are no active calculating slaves available!
291                            </td>
292                        </tr>
293                    </table>
294                </div>
295            </div>
296        </div>
297    </div>
298</div>
299
300<div class="row">
301    <div class="col-lg-12">
302        <div class="panel panel-default">
303            <div class="panel-heading">
304                <h3 class="panel-title">
305                    <a data-toggle="collapse" data-target="#collapseActiveIdleSlaves"
306                       ng-href="#/status" class="collapsed">
307                        Active Idle Slaves
308                    </a>
309                </h3>
310            </div>
311            <div id="collapseActiveIdleSlaves"
312                 class="panel-collapse collapse">
313                <div class="panel-body">
314                    <table class="table table-hover">
315                        <thead>
316                        <tr>
317                            <th ng-click="activeIdleSlavesOrderColumn='Slave.Name';
318                                                  activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
319                                Slave
320                            </th>
321                            <th ng-click="activeIdleSlavesOrderColumn='CpuUtilization';
322                                                  activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
323                                CPU Utilization
324                            </th>
325                            <th ng-click="activeIdleSlavesOrderColumn='Cores';
326                                                  activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
327                                Cores
328                            </th>
329                            <th ng-click="activeIdleSlavesOrderColumn='Memory';
330                                                  activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
331                                Memory
332                            </th>
333                        </tr>
334                        </thead>
335                        <tr ng-repeat="slave in activeIdleSlaves = (status.SlavesStatus
336                                | filter: {
337                                    IsAllowedToCalculate: true,
338                                    State: 'Idle'
339                                  }
340                                | orderBy: activeIdleSlavesOrderColumn:activeIdleSlavesReverseSort)">
341                            <td>{{slave.Slave.Name}}</td>
342                            <td>{{slave.CpuUtilization | number: 2}} %</td>
343                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
344                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
345                        </tr>
346                        <tr ng-hide="activeIdleSlaves.length">
347                            <td colspan="4" class="text-center">
348                            There are no active idle slaves available!
349                            <td>
350                        </tr>
351                    </table>
352                </div>
353            </div>
354        </div>
355    </div>
356</div>
357
358<div class="row">
359    <div class="col-lg-12">
360        <div class="panel panel-default">
361            <div class="panel-heading">
362                <h3 class="panel-title">
363                    <a data-toggle="collapse" data-target="#collapseInactiveSlaves"
364                       ng-href="#/status" class="collapsed">
365                        Inactive Slaves
366                    </a>
367                </h3>
368            </div>
369            <div id="collapseInactiveSlaves"
370                 class="panel-collapse collapse">
371                <div class="panel-body">
372                    <table class="table table-hover">
373                        <thead>
374                        <tr>
375                            <th ng-click="inactiveSlavesOrderColumn='Slave.Name';
376                                                  inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
377                                Slave
378                            </th>
379                            <th ng-click="inactiveSlavesOrderColumn='CpuUtilization';
380                                                  inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
381                                CPU Utilization
382                            </th>
383                            <th ng-click="inactiveSlavesOrderColumn='Cores';
384                                                  inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
385                                Cores
386                            </th>
387                            <th ng-click="inactiveSlavesOrderColumn='Memory';
388                                                  inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
389                                Memory
390                            </th>
391                        </tr>
392                        </thead>
393                        <tr ng-repeat="slave in inactiveSlaves = (status.SlavesStatus
394                                | filter: {
395                                    IsAllowedToCalculate: false
396                                  }
397                                | orderBy: inactiveSlavesOrderColumn:inactiveSlavesReverseSort)">
398                            <td>{{slave.Slave.Name}}</td>
399                            <td>{{slave.CpuUtilization | number: 2}} %</td>
400                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
401                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
402                        </tr>
403                        <tr ng-hide="inactiveSlaves.length">
404                            <td colspan="4" class="text-center">No inactive slaves available!</td>
405                        </tr>
406                    </table>
407                </div>
408            </div>
409        </div>
410    </div>
411</div>
412</div>
413
414<script>
415    $(document).ready(function () {
416        $('[data-toggle="tooltip"]').tooltip();
417    });
418</script>
Note: See TracBrowser for help on using the repository browser.