Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/30/15 13:12:07 (9 years ago)
Author:
dglaser
Message:

#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
Location:
branches/HiveStatistics/sources
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources

  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/HeuristicLab.Services.WebApp.Status-3.3.csproj

    r12428 r12551  
    7373  </PropertyGroup>
    7474  <ItemGroup>
    75     <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
    76       <HintPath>..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
    77       <Private>False</Private>
     75    <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
     76      <SpecificVersion>False</SpecificVersion>
     77      <HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    7878    </Reference>
    7979    <Reference Include="System" />
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs

    r12525 r12551  
    2222using System;
    2323using System.Collections.Generic;
    24 using System.Data.Linq;
    2524using System.Linq;
    2625using System.Web.Http;
    2726using HeuristicLab.Services.Hive;
    2827using HeuristicLab.Services.Hive.DataAccess;
    29 using DAL = HeuristicLab.Services.Hive.DataAccess;
    30 using DTO = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;
     28using HeuristicLab.Services.Hive.DataAccess.Interfaces;
     29using DT = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;
    3130
    3231namespace HeuristicLab.Services.WebApp.Status.WebApi {
    3332  public class DataController : ApiController {
    34 
    35     // start temporary quickfix
     33    private const int LAST_TASKS = 20;
     34
     35    private IPersistenceManager PersistenceManager {
     36      get { return ServiceLocator.Instance.PersistenceManager; }
     37    }
     38
    3639    private const string SQL_USER_TASK_STATUS =
    3740      @"WITH UserTasks AS (
     
    5356    }
    5457
    55     public IEnumerable<DTO.TaskStatus> GetTaskStatus(HiveDataContext db) {
    56       var query = db.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList();
    57       return query.Select(uts => new DTO.TaskStatus {
    58         User = new DTO.User {
    59           Id = uts.UserId.ToString(),
    60           Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName
    61         },
    62         CalculatingTasks = uts.CalculatingTasks,
    63         WaitingTasks = uts.WaitingTasks
    64       }).OrderBy(x => x.User.Name);
    65     }
    66     // end temporary quickfix
    67 
    68     public DTO.Status GetStatus() {
    69       using (var db = new HiveDataContext()) {
    70         var onlineSlaves = (from slave in db.Resources.OfType<DAL.Slave>()
    71                             where slave.SlaveState == SlaveState.Calculating || slave.SlaveState == SlaveState.Idle
    72                             select slave).ToList();
     58    private IEnumerable<DT.TaskStatus> GetTaskStatus(IPersistenceManager pm) {
     59      return pm.UseTransaction(() => {
     60        var query = pm.DataContext.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList();
     61        return query.Select(uts => new DT.TaskStatus {
     62          User = new DT.User {
     63            Id = uts.UserId.ToString(),
     64            Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName
     65          },
     66          CalculatingTasks = uts.CalculatingTasks,
     67          WaitingTasks = uts.WaitingTasks
     68        }).OrderBy(x => x.User.Name);
     69      });
     70    }
     71
     72    private DT.TimeStatus GetTimeStatus(IPersistenceManager pm) {
     73      return pm.UseTransaction(() => {
     74        var factTaskDao = pm.FactTaskDao;
     75        var factTasks = factTaskDao.GetAll();
     76        var completedTasks = factTaskDao.GetCompletedTasks()
     77          .OrderByDescending(x => x.EndTime)
     78          .Take(LAST_TASKS);
     79        var lastCalculatingTimes = completedTasks
     80          .GroupBy(x => 1)
     81          .Select(x => new {
     82            Min = x.Min(y => y.CalculatingTime),
     83            Max = x.Max(y => y.CalculatingTime),
     84            Avg = (long)x.Average(y => (long?)y.CalculatingTime)
     85          }).FirstOrDefault();
     86        var calculatingTasks = factTasks.Where(x => x.TaskState == TaskState.Calculating);
     87        int count = calculatingTasks.Count();
     88        return new DT.TimeStatus {
     89          MinCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Min : 0,
     90          MaxCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Max : 0,
     91          AvgWaitingTime = count > 0 ? (long)calculatingTasks.OrderBy(x => x.StartTime).Take(count / 3).Average(x => x.InitialWaitingTime) : 0,
     92          AvgCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Avg : 0,
     93          TotalCpuTime = factTasks.Sum(x => x.CalculatingTime),
     94          StandardDeviationCalculatingTime = (long)StandardDeviation(completedTasks.Select(x => (double)x.CalculatingTime)),
     95          BeginDate = factTasks.OrderBy(x => x.StartTime).Select(x => x.StartTime).FirstOrDefault()
     96        };
     97      });
     98    }
     99
     100    public DT.Status GetStatus() {
     101      using (var pm = PersistenceManager) {
     102        var slaveDao = pm.SlaveDao;
     103        var onlineSlaves = pm.UseTransaction(() => slaveDao.GetOnlineSlaves().ToList());
    73104        var activeSlaves = onlineSlaves.Where(s => s.IsAllowedToCalculate).ToList();
    74105        var calculatingSlaves = activeSlaves.Where(s => s.SlaveState == SlaveState.Calculating).ToList();
    75         int calculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.Memory) : 0;
    76         int freeCalculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.FreeMemory) : 0;
    77 
    78         return new DTO.Status {
    79           CoreStatus = new DTO.CoreStatus {
    80             TotalCores = onlineSlaves.Sum(s => s.Cores ?? 0),
    81             FreeCores = onlineSlaves.Sum(s => s.FreeCores ?? 0), // temporary for old chart data
     106        int totalCores = onlineSlaves.Sum(s => s.Cores ?? 0);
     107        int totalMemory = onlineSlaves.Sum(s => s.Memory ?? 0);
     108        return new DT.Status {
     109          CoreStatus = new DT.CoreStatus {
     110            TotalCores = totalCores,
     111            UsedCores = totalCores - onlineSlaves.Sum(s => s.FreeCores ?? 0),
    82112            ActiveCores = activeSlaves.Sum(s => s.Cores ?? 0),
    83113            CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0)
    84114          },
    85           CpuUtilizationStatus = new DTO.CpuUtilizationStatus {
     115          CpuUtilizationStatus = new DT.CpuUtilizationStatus {
    86116            TotalCpuUtilization = onlineSlaves.Any()
    87117                                  ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2)
     
    94124                                        : 0.0
    95125          },
    96           MemoryStatus = new DTO.MemoryStatus {
    97             TotalMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.Memory) : 0,
    98             FreeMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.FreeMemory) : 0,
    99             ActiveMemory = activeSlaves.Any() ? (int)activeSlaves.Sum(s => s.Memory) : 0,
    100             UsedMemory = calculatingMemory - freeCalculatingMemory
    101           },
    102           TasksStatus = GetTaskStatus(db),
    103           SlavesStatus = onlineSlaves.Select(x => new DTO.SlaveStatus {
    104             Slave = new DTO.Slave {
     126          MemoryStatus = new DT.MemoryStatus {
     127            TotalMemory = totalMemory,
     128            UsedMemory = totalMemory - onlineSlaves.Sum(s => s.FreeMemory ?? 0),
     129            ActiveMemory = activeSlaves.Sum(s => s.Memory ?? 0),
     130            CalculatingMemory = calculatingSlaves.Sum(s => s.Memory ?? 0) - calculatingSlaves.Sum(s => s.FreeMemory ?? 0)
     131          },
     132          TimeStatus = GetTimeStatus(pm),
     133          TasksStatus = GetTaskStatus(pm),
     134          SlavesStatus = onlineSlaves.Select(x => new DT.SlaveStatus {
     135            Slave = new DT.Slave {
    105136              Id = x.ResourceId.ToString(),
    106137              Name = x.Name
     
    119150    }
    120151
    121     public IEnumerable<DTO.Status> GetStatusHistory(DateTime start, DateTime end) {
     152    public IEnumerable<DT.Status> GetStatusHistory(DateTime start, DateTime end) {
    122153      TimeSpan ts = end - start;
    123154      int increment = 1;
     
    127158        increment += 5;
    128159      }
    129       using (var db = new HiveDataContext()) {
    130         DataLoadOptions loadOptions = new DataLoadOptions();
    131         loadOptions.LoadWith<Statistics>(o => o.SlaveStatistics);
    132         db.LoadOptions = loadOptions;
    133         db.DeferredLoadingEnabled = false;
    134         var statistics = db.Statistics.Where(s => s.Timestamp >= start && s.Timestamp <= end)
    135                                       .OrderBy(s => s.Timestamp)
    136                                       .ToList();
    137         var status = new DTO.Status {
    138           CoreStatus = new DTO.CoreStatus(),
    139           CpuUtilizationStatus = new DTO.CpuUtilizationStatus(),
    140           MemoryStatus = new DTO.MemoryStatus()
    141         };
    142         int freeCores = 0;
    143         int freeMemory = 0;
    144         int i = 1;
    145         foreach (var statistic in statistics) {
    146           status.CoreStatus.TotalCores += statistic.SlaveStatistics.Sum(x => x.Cores);
    147           freeCores += statistic.SlaveStatistics.Sum(x => x.FreeCores);
    148           status.CpuUtilizationStatus.TotalCpuUtilization += statistic.SlaveStatistics.Any()
    149                                                              ? statistic.SlaveStatistics.Average(x => x.CpuUtilization)
    150                                                              : 0.0;
    151           status.MemoryStatus.TotalMemory += statistic.SlaveStatistics.Sum(x => x.Memory);
    152           freeMemory += statistic.SlaveStatistics.Sum(x => x.FreeMemory);
    153           if (i >= increment) {
    154             status.Timestamp = JavascriptUtils.ToTimestamp(statistic.Timestamp);
    155             status.CoreStatus.TotalCores /= i;
    156             freeCores /= i;
    157             status.CpuUtilizationStatus.TotalCpuUtilization /= i;
    158             status.MemoryStatus.TotalMemory /= i;
    159             freeMemory /= i;
    160             status.CoreStatus.ActiveCores = status.CoreStatus.TotalCores;
    161             status.MemoryStatus.ActiveMemory = status.MemoryStatus.TotalMemory;
    162             status.CpuUtilizationStatus.ActiveCpuUtilization = status.CpuUtilizationStatus.TotalCpuUtilization;
    163             status.CpuUtilizationStatus.CalculatingCpuUtilization = status.CpuUtilizationStatus.CalculatingCpuUtilization;
    164             status.CoreStatus.CalculatingCores = status.CoreStatus.TotalCores - freeCores;
    165             status.MemoryStatus.UsedMemory = status.MemoryStatus.TotalMemory - freeMemory;
    166             yield return status;
    167             status = new DTO.Status {
    168               CoreStatus = new DTO.CoreStatus(),
    169               CpuUtilizationStatus = new DTO.CpuUtilizationStatus(),
    170               MemoryStatus = new DTO.MemoryStatus()
    171             };
    172             freeCores = 0;
    173             freeMemory = 0;
    174             i = 1;
    175           } else {
     160      using (var pm = PersistenceManager) {
     161        var factClientInfoDao = pm.FactClientInfoDao;
     162        var clientInfos = pm.UseTransaction(() => {
     163          return factClientInfoDao.GetAll()
     164            .Where(s => s.Time >= start
     165                        && s.Time <= end
     166                        && s.SlaveState != SlaveState.Offline)
     167            .OrderBy(s => s.Time)
     168            .GroupBy(s => s.Time)
     169            .Select(x => new {
     170              Timestamp = x.Key,
     171              TotalCores = x.Sum(y => y.NumTotalCores),
     172              UsedCores = x.Sum(y => y.NumUsedCores),
     173              TotalMemory = x.Sum(y => y.TotalMemory),
     174              UsedMemory = x.Sum(y => y.UsedMemory),
     175              CpuUtilization = x.Where(y => y.IsAllowedToCalculate).Average(y => y.CpuUtilization)
     176            })
     177            .ToList();
     178        });
     179        var statusList = new List<DT.Status>();
     180        var e = clientInfos.GetEnumerator();
     181        do {
     182          var status = new DT.Status {
     183            CoreStatus = new DT.CoreStatus(),
     184            CpuUtilizationStatus = new DT.CpuUtilizationStatus(),
     185            MemoryStatus = new DT.MemoryStatus()
     186          };
     187          int i = 0;
     188          DateTime lastTimestamp = DateTime.Now;
     189          while (e.MoveNext()) {
     190            var clientInfo = e.Current;
     191            status.CoreStatus.TotalCores += clientInfo.TotalCores;
     192            status.CoreStatus.UsedCores += clientInfo.UsedCores;
     193            status.MemoryStatus.TotalMemory += clientInfo.TotalMemory;
     194            status.MemoryStatus.UsedMemory += clientInfo.UsedMemory;
     195            status.CpuUtilizationStatus.TotalCpuUtilization += clientInfo.CpuUtilization;
     196            lastTimestamp = clientInfo.Timestamp;
    176197            i++;
     198            if (i >= increment)
     199              break;
    177200          }
    178         }
    179       }
     201          if (i <= 0) continue;
     202          status.Timestamp = JavascriptUtils.ToTimestamp(lastTimestamp);
     203          status.CoreStatus.TotalCores /= i;
     204          status.CoreStatus.UsedCores /= i;
     205          status.MemoryStatus.TotalMemory /= i;
     206          status.MemoryStatus.UsedMemory /= i;
     207          status.CpuUtilizationStatus.TotalCpuUtilization /= i;
     208          statusList.Add(status);
     209        } while (e.Current != null);
     210        return statusList;
     211      }
     212    }
     213
     214    private double StandardDeviation(IEnumerable<double> source) {
     215      int n = 0;
     216      double mean = 0;
     217      double M2 = 0;
     218
     219      foreach (double x in source) {
     220        n = n + 1;
     221        double delta = x - mean;
     222        mean = mean + delta / n;
     223        M2 += delta * (x - mean);
     224      }
     225      if (n < 2) {
     226        return M2;
     227      }
     228      return Math.Sqrt(M2 / (n - 1));
    180229    }
    181230  }
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataTransfer/Status.cs

    r12516 r12551  
    2727  public class CoreStatus {
    2828    public int TotalCores { get; set; }
    29     public int FreeCores { get; set; } // temporary quickfix for old chart data
     29    public int UsedCores { get; set; }
    3030    public int ActiveCores { get; set; }
    3131    public int CalculatingCores { get; set; }
     
    4040  public class MemoryStatus {
    4141    public int TotalMemory { get; set; }
    42     public int FreeMemory { get; set; } // temporary quickfix for old chart data
     42    public int UsedMemory { get; set; }
    4343    public int ActiveMemory { get; set; }
    44     public int UsedMemory { get; set; }
     44    public int CalculatingMemory { get; set; }
    4545  }
    4646
     
    6666    public long MaxCalculatingTime { get; set; }
    6767    public long AvgCalculatingTime { get; set; }
     68    public long StandardDeviationCalculatingTime { get; set; }
    6869    public long AvgWaitingTime { get; set; }
    6970    public long TotalCpuTime { get; set; }
    70     public DateTime BeginDate { get; set; }
     71    public DateTime? BeginDate { get; set; }
    7172  }
    7273
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js

    r12522 r12551  
    7878                    for (var i = 0; i < noOfStatus; ++i) {
    7979                        var curStatus = status[i];
    80                         var cpuData = Math.round(curStatus.CpuUtilizationStatus.ActiveCpuUtilization);
     80                        var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization);
    8181                        cpuSeries.push([curStatus.Timestamp, cpuData]);
    82                         coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
    83                         coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
    84                         memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
     82                        coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.TotalCores]);
     83                        coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.UsedCores]);
     84                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.TotalMemory / 1024)]);
    8585                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
    8686                    }
     
    9494                        { data: memorySeries[1], label: "&nbsp;Used Memory", color: "LightPink" }
    9595                    ];
    96 
    9796                });
    9897            };
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml

    r12522 r12551  
    8080                    <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
    8181                        <td class="text-left">Total:</td>
    82                         <td class="text-right">{{status.MemoryStatus.TotalMemory | toGB}}</td>
     82                        <td class="text-right">{{status.MemoryStatus.TotalMemory | kbToGB}} GB</td>
    8383                    </tr>
    8484                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
    8585                        <td class="text-left">Active:</td>
    86                         <td class="text-right">{{status.MemoryStatus.ActiveMemory | toGB}}</td>
     86                        <td class="text-right">{{status.MemoryStatus.ActiveMemory | kbToGB}} GB</td>
    8787                    </tr>
    8888                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
    8989                        <td class="text-left">Calculating:</td>
    90                         <td class="text-right">{{status.MemoryStatus.UsedMemory | toGB}}</td>
     90                        <td class="text-right">{{status.MemoryStatus.CalculatingMemory | kbToGB}} GB</td>
    9191                    </tr>
    9292                </table>
     
    115115                    </tr>
    116116                </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>
    117167            </div>
    118168        </div>
     
    233283                            <td>{{slave.Slave.Name}}</td>
    234284                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    235                             <td>{{slave.Cores | number}}</td>
    236                             <td>{{slave.Memory | toGB}}</td>
     285                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     286                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    237287                        </tr>
    238288                        <tr ng-hide="activeCalculatingSlaves.length">
     
    291341                            <td>{{slave.Slave.Name}}</td>
    292342                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    293                             <td>{{slave.Cores | number}}</td>
    294                             <td>{{slave.Memory | toGB}}</td>
     343                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     344                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    295345                        </tr>
    296346                        <tr ng-hide="activeIdleSlaves.length">
     
    348398                            <td>{{slave.Slave.Name}}</td>
    349399                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    350                             <td>{{slave.Cores | number}}</td>
    351                             <td>{{slave.Memory | toGB}}</td>
     400                            <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     401                            <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    352402                        </tr>
    353403                        <tr ng-hide="inactiveSlaves.length">
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js

    r12525 r12551  
    117117                    $scope.cpu.knobData = Math.round(status.CpuUtilizationStatus.ActiveCpuUtilization);
    118118                    $scope.core.knobData = Math.round(status.CoreStatus.CalculatingCores / status.CoreStatus.ActiveCores * 100);
    119                     $scope.memory.knobData = Math.round(status.MemoryStatus.UsedMemory / status.MemoryStatus.ActiveMemory * 100);
     119                    $scope.memory.knobData = Math.round(status.MemoryStatus.CalculatingMemory / status.MemoryStatus.ActiveMemory * 100);
    120120                    // chart series
    121121                    var cpuSeries = $scope.cpu.series[0].data.splice(0);
     
    141141                    cpuSeries.push([$scope.status.Timestamp, $scope.cpu.knobData]);
    142142
    143                     // charts are currently filled with old total/used data
    144                     // start temporary
    145                     var usedCores = status.CoreStatus.TotalCores - status.CoreStatus.FreeCores;
    146                     var usedMemory = status.MemoryStatus.TotalMemory - status.MemoryStatus.FreeMemory;
    147                     // end temporary
    148143                    coreSeries[0].push([$scope.status.Timestamp, status.CoreStatus.TotalCores]);
    149                     coreSeries[1].push([$scope.status.Timestamp, usedCores]);
     144                    coreSeries[1].push([$scope.status.Timestamp, status.CoreStatus.UsedCores]);
    150145                    memorySeries[0].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.TotalMemory / 1024)]);
    151                     memorySeries[1].push([$scope.status.Timestamp, Math.round(usedMemory / 1024)]);
     146                    memorySeries[1].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.UsedMemory / 1024)]);
    152147                    $scope.cpu.series = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
    153148                    $scope.core.series = [
     
    174169                    for (var i = 0; i < noOfStatus; ++i) {
    175170                        var curStatus = status[i];
    176                         var cpuData = Math.round(curStatus.CpuUtilizationStatus.ActiveCpuUtilization);
     171                        var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization);
    177172                        cpuSeries.push([curStatus.Timestamp, cpuData]);
    178                         coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
    179                         coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
    180                         memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
     173                        coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.TotalCores]);
     174                        coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.UsedCores]);
     175                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.TotalMemory / 1024)]);
    181176                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
    182177                    }
     
    202197        }]
    203198    );
    204 
    205     module.filter('toGB', function () {
    206         return function (text, length, end) {
    207             if (text == null || text == '') text = '0';
    208             text = Math.round(parseInt(text) / 1024);
    209             return text + ' GB';
    210         };
    211     });
    212 
    213199})();
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/packages.config

    r12429 r12551  
    55  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
    66  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
    7   <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
     7  <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
    88</packages>
Note: See TracChangeset for help on using the changeset viewer.