- Timestamp:
- 06/30/15 13:12:07 (9 years ago)
- 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 73 73 </PropertyGroup> 74 74 <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> 78 78 </Reference> 79 79 <Reference Include="System" /> -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs
r12525 r12551 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Data.Linq;25 24 using System.Linq; 26 25 using System.Web.Http; 27 26 using HeuristicLab.Services.Hive; 28 27 using HeuristicLab.Services.Hive.DataAccess; 29 using DAL = HeuristicLab.Services.Hive.DataAccess;30 using DT O= HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;28 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 29 using DT = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer; 31 30 32 31 namespace HeuristicLab.Services.WebApp.Status.WebApi { 33 32 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 36 39 private const string SQL_USER_TASK_STATUS = 37 40 @"WITH UserTasks AS ( … … 53 56 } 54 57 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()); 73 104 var activeSlaves = onlineSlaves.Where(s => s.IsAllowedToCalculate).ToList(); 74 105 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), 82 112 ActiveCores = activeSlaves.Sum(s => s.Cores ?? 0), 83 113 CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0) 84 114 }, 85 CpuUtilizationStatus = new DT O.CpuUtilizationStatus {115 CpuUtilizationStatus = new DT.CpuUtilizationStatus { 86 116 TotalCpuUtilization = onlineSlaves.Any() 87 117 ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2) … … 94 124 : 0.0 95 125 }, 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 { 105 136 Id = x.ResourceId.ToString(), 106 137 Name = x.Name … … 119 150 } 120 151 121 public IEnumerable<DT O.Status> GetStatusHistory(DateTime start, DateTime end) {152 public IEnumerable<DT.Status> GetStatusHistory(DateTime start, DateTime end) { 122 153 TimeSpan ts = end - start; 123 154 int increment = 1; … … 127 158 increment += 5; 128 159 } 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; 176 197 i++; 198 if (i >= increment) 199 break; 177 200 } 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)); 180 229 } 181 230 } -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataTransfer/Status.cs
r12516 r12551 27 27 public class CoreStatus { 28 28 public int TotalCores { get; set; } 29 public int FreeCores { get; set; } // temporary quickfix for old chart data29 public int UsedCores { get; set; } 30 30 public int ActiveCores { get; set; } 31 31 public int CalculatingCores { get; set; } … … 40 40 public class MemoryStatus { 41 41 public int TotalMemory { get; set; } 42 public int FreeMemory { get; set; } // temporary quickfix for old chart data42 public int UsedMemory { get; set; } 43 43 public int ActiveMemory { get; set; } 44 public int UsedMemory { get; set; }44 public int CalculatingMemory { get; set; } 45 45 } 46 46 … … 66 66 public long MaxCalculatingTime { get; set; } 67 67 public long AvgCalculatingTime { get; set; } 68 public long StandardDeviationCalculatingTime { get; set; } 68 69 public long AvgWaitingTime { get; set; } 69 70 public long TotalCpuTime { get; set; } 70 public DateTime BeginDate { get; set; }71 public DateTime? BeginDate { get; set; } 71 72 } 72 73 -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js
r12522 r12551 78 78 for (var i = 0; i < noOfStatus; ++i) { 79 79 var curStatus = status[i]; 80 var cpuData = Math.round(curStatus.CpuUtilizationStatus. ActiveCpuUtilization);80 var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization); 81 81 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)]); 85 85 memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]); 86 86 } … … 94 94 { data: memorySeries[1], label: " Used Memory", color: "LightPink" } 95 95 ]; 96 97 96 }); 98 97 }; -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml
r12522 r12551 80 80 <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves"> 81 81 <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> 83 83 </tr> 84 84 <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate"> 85 85 <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> 87 87 </tr> 88 88 <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate"> 89 89 <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> 91 91 </tr> 92 92 </table> … … 115 115 </tr> 116 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> 117 167 </div> 118 168 </div> … … 233 283 <td>{{slave.Slave.Name}}</td> 234 284 <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> 237 287 </tr> 238 288 <tr ng-hide="activeCalculatingSlaves.length"> … … 291 341 <td>{{slave.Slave.Name}}</td> 292 342 <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> 295 345 </tr> 296 346 <tr ng-hide="activeIdleSlaves.length"> … … 348 398 <td>{{slave.Slave.Name}}</td> 349 399 <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> 352 402 </tr> 353 403 <tr ng-hide="inactiveSlaves.length"> -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js
r12525 r12551 117 117 $scope.cpu.knobData = Math.round(status.CpuUtilizationStatus.ActiveCpuUtilization); 118 118 $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); 120 120 // chart series 121 121 var cpuSeries = $scope.cpu.series[0].data.splice(0); … … 141 141 cpuSeries.push([$scope.status.Timestamp, $scope.cpu.knobData]); 142 142 143 // charts are currently filled with old total/used data144 // start temporary145 var usedCores = status.CoreStatus.TotalCores - status.CoreStatus.FreeCores;146 var usedMemory = status.MemoryStatus.TotalMemory - status.MemoryStatus.FreeMemory;147 // end temporary148 143 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]); 150 145 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)]); 152 147 $scope.cpu.series = [{ data: cpuSeries, label: " CPU Utilization", color: "#f7921d" }]; 153 148 $scope.core.series = [ … … 174 169 for (var i = 0; i < noOfStatus; ++i) { 175 170 var curStatus = status[i]; 176 var cpuData = Math.round(curStatus.CpuUtilizationStatus. ActiveCpuUtilization);171 var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization); 177 172 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)]); 181 176 memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]); 182 177 } … … 202 197 }] 203 198 ); 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 213 199 })(); -
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/packages.config
r12429 r12551 5 5 <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" /> 6 6 <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" /> 8 8 </packages>
Note: See TracChangeset
for help on using the changeset viewer.