private ProcessStats GetProcessStats(Process p) { ProcessStats stats = new ProcessStats() { ExecutionTimeMs = p.ProcessWallTimeMs, }; foreach (int file in p.Consumes) { File f; if (m_buildGraph.Files.TryGetValue(file, out f)) { if (f.Location.EndsWith(".cs", StringComparison.OrdinalIgnoreCase)) { stats.CsFiles++; } else if (f.Location.EndsWith(".cpp", StringComparison.OrdinalIgnoreCase)) { stats.CppFiles++; } } } return(stats); }
private void ProcMonitor(object myProc) { Process Proc = (Process)myProc; ProcessStats procStats = new ProcessStats(Proc); string HashProcName = Proc.ProcessName + "(" + Proc.Id + ")"; Console.WriteLine("\tMonitoring..."); while (!Proc.HasExited) { lock (this) { if (!this.Monitoring) { Proc = null; return; } } procStats.UpdateStats(Proc); Thread.Sleep(500); } lock (this) { Debug.WriteLine("Closing Thread"); this.RemoveWatched(HashProcName); this.ProcInfo.Add(procStats); this.FlushMonitorStream(); Proc.Close(); Proc.Dispose(); } }
public async Task ProcessThresholdsExceeded_OutOfProc_ReturnsExpectedResult(ProcessStats hostProcessStats, List <ProcessStats> allWorkerProcessStats, bool expected) { var workerStatuses = new Dictionary <string, WorkerStatus>(); foreach (var workerProcessStats in allWorkerProcessStats) { var workerStatus = new WorkerStatus { ProcessStats = workerProcessStats }; workerStatuses.Add(Guid.NewGuid().ToString(), workerStatus); } var mockDispatcher = new Mock <IFunctionInvocationDispatcher>(MockBehavior.Strict); mockDispatcher.SetupGet(p => p.State).Returns(FunctionInvocationDispatcherState.Initialized); mockDispatcher.Setup(p => p.GetWorkerStatusesAsync()).ReturnsAsync(workerStatuses); var mockDispatcherFactory = new Mock <IFunctionInvocationDispatcherFactory>(MockBehavior.Strict); mockDispatcherFactory.Setup(p => p.GetFunctionDispatcher()).Returns(mockDispatcher.Object); var mockScriptHostManager = new Mock <IScriptHostManager>(MockBehavior.Strict); var scriptHostManagerServiceProviderMock = mockScriptHostManager.As <IServiceProvider>(); scriptHostManagerServiceProviderMock.Setup(p => p.GetService(typeof(IFunctionInvocationDispatcherFactory))).Returns(mockDispatcherFactory.Object); _serviceProviderMock.Setup(p => p.GetService(typeof(IScriptHostManager))).Returns(mockScriptHostManager.Object); _mockProcessMonitor.Setup(p => p.GetStats()).Returns(hostProcessStats); Collection <string> exceededCounters = new Collection <string>(); bool result = await _performanceManager.ProcessThresholdsExceeded(exceededCounters, _logger); Assert.Equal(expected, result); }
private static bool ClearTrackTopicQueue(TopicViewCollection <TopicView> tvc) #endif { ProcessStats ps = new ProcessStats(tvc); ps.Enqueue(); return(true); }
static async Task <ProcessStats> RunOneProcess(string commandline, string prefix, TextWriter outWriter, TextWriter errWriter, CancellationToken cancel, bool skipEmptyLines, bool writeStderr, ICollection <uint> procIDs) { log.dbg("starting: [{0}]", commandline); uint?currProcID = null; ProcessStats procStats = await ProcessRedirectAsync.Run( commandline, onProcessCreated : (uint procId) => { currProcID = procId; lock (procIDs) { procIDs.Add(procId); } }, onProcessOutput : (kind, line) => { if (kind == KINDOFOUTPUT.STDERR && !writeStderr) { return; } if (skipEmptyLines && String.IsNullOrWhiteSpace(line)) { return; } TextWriter writer = kind == KINDOFOUTPUT.STDOUT ? outWriter : errWriter; if (String.IsNullOrEmpty(prefix)) { writer.WriteLine(line); } else { writer.WriteLine(prefix + "\t" + line); } }); if (currProcID.HasValue) { lock (procIDs) { procIDs.Remove(currProcID.Value); } log.dbg("process ended: ID: {0}, ExitCode: {1}", currProcID.Value, procStats.ExitCode); } else { log.err("proc has no ID set. komisch...?"); } return(procStats); }
public async Task ProcessThresholdsExceeded_InProc_ReturnsExpectedResult(ProcessStats hostProcessStats, bool expected) { _serviceProviderMock.Setup(p => p.GetService(typeof(IScriptHostManager))).Returns(null); _mockProcessMonitor.Setup(p => p.GetStats()).Returns(hostProcessStats); Collection <string> exceededCounters = new Collection <string>(); bool result = await _performanceManager.ProcessThresholdsExceeded(exceededCounters, _logger); Assert.Equal(expected, result); }
protected void Assert(ProcessStats process) { process.Should().NotBeNull(); process.Timestamp.Should().BeGreaterThan(0); process.OpenFileDescriptors.Should().NotBe(0); process.CPU.Should().NotBeNull(); process.CPU.TotalInMilliseconds.Should().BeGreaterThan(0); process.Memory.Should().NotBeNull(); process.Memory.TotalVirtualInBytes.Should().BeGreaterThan(0); }
/// <summary> /// 线程更新统计信息 /// </summary> /// <param name="isguest">是否游客</param> public static void UpdateStatCount(bool isguest, bool sessionexists) { string browser = Utils.GetClientBrower(); string os = Utils.GetClientOS(); string visitorsadd = string.Empty; if (!sessionexists) { visitorsadd = "OR ([type]='browser' AND [variable]='" + browser + "') OR ([type]='os' AND [variable]='" + os + "')" + (isguest ? " OR ([type]='total' AND [variable]='guests')" : " OR ([type]='total' AND [variable]='members')"); } ProcessStats ps = new ProcessStats(browser, os, visitorsadd); ps.Enqueue(); }
public static Stats Run(IEnumerable <ProcCtx> ProcessesToStart, TextWriter outStream, TextWriter errStream, int maxParallel, bool skipEmptyLines, bool quiet, bool writeStderr, Func <long> numberJobs) { ProcessRedirectAsync.Init(); Stats stats = new Stats(); if (numberJobs != null) { Task.Run(() => stats.AllItems = numberJobs()); } ICollection <uint> runningProcIDs = new HashSet <uint>(); using (CancellationTokenSource cts = new CancellationTokenSource()) using (TextWriter exitcodeWriter = TextWriter.Synchronized(new StreamWriter(@".\forp.ExitCode.txt", append: false, encoding: Encoding.UTF8))) { log.dbg($"starting with maxParallel: {maxParallel}"); var cancel = cts.Token; if (!quiet) { Console.Error.WriteLine("press 'q' to quit. 'h' for more keys."); } Task.Run(() => HandleKeys(cts, outStream, errStream, runningProcIDs)); var procs = new MaxTasks(); var procsTask = procs.Start( tasks: ProcessesToStart.Select( async(procToRun) => { ProcessStats procStats = await RunOneProcess(procToRun.commandline, procToRun.prefix, outStream, errStream, cancel, skipEmptyLines, writeStderr, runningProcIDs).ConfigureAwait(false); exitcodeWriter.WriteLine($"{procStats.ExitCode}\t{procToRun.commandline}"); Interlocked.Add(ref stats.procTotalTime, procStats.TotalTime.Ticks); Interlocked.Add(ref stats.procKernelTime, procStats.KernelTime.Ticks); Interlocked.Add(ref stats.procUserTime, procStats.UserTime.Ticks); }), MaxParallel: maxParallel, cancel: cts.Token); if (!quiet) { var status = new StatusLineWriter(); var currProcess = Process.GetCurrentProcess(); Misc.DoUntilTaskFinished(procsTask, TimeSpan.FromSeconds(2), () => WriteStatusLine(status, procs, currProcess, stats)); Console.Error.WriteLine(); } else { procsTask.Wait(); } } return(stats); }
public async Task DisplayProcessResutls() { pnlProcesses.Controls.Clear(); if (ProcessStats.Any()) { foreach (var item in ProcessStats) { if (item.ShowOnDashboard == true) { IconChar icon = IconChar.None; string n = item.Name; bool existent = RuntimeSettings.ProcessIcons.TryGetValue(n, out icon); Color BarColor = Color.Transparent; if (!string.IsNullOrEmpty(n)) { existent = RuntimeSettings.ProcessColors.TryGetValue(n, out BarColor); } ThreeRowsColumn card = new ThreeRowsColumn(barColor: BarColor); card.Name = item.Name; card.Icon = icon; card.L1Text = item.Count.ToString(); card.L2Text = item.Result.ToString(); card.L3Text = item.PercentOfAll.ToString("0.00"); card.Action = new Action <int?, string>(OpenProcesses); card.ActionTypeId = item.ActionTypeId; card.DateFrom = DateFrom; card.DateTo = DateTo; card.Dock = DockStyle.Left; pnlProcesses.Controls.Add(card); } } } ThreeRowsColumn Headlines = new ThreeRowsColumn(); Headlines.Dock = DockStyle.Left; pnlProcesses.Controls.Add(Headlines); }
public ActionResult <ProcessStats> GetProcessStats() { try { ProcessStatsResourcer resourcer = new ProcessStatsResourcer(); ProcessStats processStats = resourcer.Retrieve(Logger); return(Ok(processStats)); } catch (ResourceFindException exception) { Logger.LogError($"App Level Exception: {exception.Message}", exception); return(StatusCode(ApiServiceFailure.ServiceFailure, exception.Message)); } catch (Exception exception) { Logger.LogError($"Endpoint Exception: {exception.Message}", exception); return(StatusCode(ApiServiceFailure.ServiceFailure)); } }
private static void ClearTrackEntryQueue(IEnumerable<EntryView> evc) { ProcessStats ps = new ProcessStats(evc); ps.Enqueue(); }