internal static ProcessPipExecutionPerformance Deserialize(BuildXLReader reader, PipExecutionLevel level, DateTime executionStart, DateTime executionStop, uint workerId) { var fingerprint = FingerprintUtilities.CreateFrom(reader); TimeSpan processExecutionTime = reader.ReadTimeSpan(); FileMonitoringViolationCounters fileMonitoringViolations = ReadFileMonitoringViolationCounters(reader); IOCounters ioCounters = IOCounters.Deserialize(reader); TimeSpan userTime = reader.ReadTimeSpan(); TimeSpan kernelTime = reader.ReadTimeSpan(); ProcessMemoryCounters memoryCounters = ProcessMemoryCounters.Deserialize(reader); uint numberOfProcesses = reader.ReadUInt32Compact(); return(new ProcessPipExecutionPerformance( fingerprint: fingerprint, level: level, executionStart: executionStart, executionStop: executionStop, processExecutionTime: processExecutionTime, fileMonitoringViolations: fileMonitoringViolations, ioCounters: ioCounters, userTime: userTime, kernelTime: kernelTime, memoryCounters: memoryCounters, numberOfProcesses: numberOfProcesses, workerId: workerId)); }
/// <nodoc /> public ProcessPipExecutionPerformance( PipExecutionLevel level, DateTime executionStart, DateTime executionStop, Fingerprint fingerprint, TimeSpan processExecutionTime, FileMonitoringViolationCounters fileMonitoringViolations, IOCounters ioCounters, TimeSpan userTime, TimeSpan kernelTime, ulong peakMemoryUsage, uint numberOfProcesses, uint workerId) : base(level, executionStart, executionStop, workerId) { Contract.Requires(executionStart.Kind == DateTimeKind.Utc); Contract.Requires(executionStop.Kind == DateTimeKind.Utc); Contract.Requires(processExecutionTime >= TimeSpan.Zero); Contract.Requires(userTime >= TimeSpan.Zero); Contract.Requires(kernelTime >= TimeSpan.Zero); ProcessExecutionTime = processExecutionTime; Fingerprint = fingerprint; FileMonitoringViolations = fileMonitoringViolations; IO = ioCounters; UserTime = userTime; KernelTime = kernelTime; PeakMemoryUsage = peakMemoryUsage; NumberOfProcesses = numberOfProcesses; }
/// <nodoc /> public ProcessPipExecutionPerformance( PipExecutionLevel level, DateTime executionStart, DateTime executionStop, Fingerprint fingerprint, TimeSpan processExecutionTime, FileMonitoringViolationCounters fileMonitoringViolations, IOCounters ioCounters, TimeSpan userTime, TimeSpan kernelTime, ProcessMemoryCounters memoryCounters, uint numberOfProcesses, uint workerId, long suspendedDurationMs) : base(level, executionStart, executionStop, workerId) { Contract.Requires(executionStart.Kind == DateTimeKind.Utc); Contract.Requires(executionStop.Kind == DateTimeKind.Utc); Contract.Requires(processExecutionTime >= TimeSpan.Zero); Contract.Requires(userTime >= TimeSpan.Zero); Contract.Requires(kernelTime >= TimeSpan.Zero); ProcessExecutionTime = processExecutionTime; Fingerprint = fingerprint; FileMonitoringViolations = fileMonitoringViolations; IO = ioCounters; UserTime = userTime; KernelTime = kernelTime; MemoryCounters = memoryCounters; NumberOfProcesses = numberOfProcesses; var durationInMs = (uint)Math.Min(uint.MaxValue, Math.Max(1, ProcessExecutionTime.TotalMilliseconds)); double cpuTime = KernelTime.TotalMilliseconds + UserTime.TotalMilliseconds; double processorPercentage = durationInMs == 0 ? 0 : cpuTime / durationInMs; ProcessorsInPercents = (ushort)Math.Min(ushort.MaxValue, processorPercentage * 100.0); SuspendedDurationMs = suspendedDurationMs; }