public static MachineResources GetMachineResources(SmapsReader smapsReader) { using (var currentProcess = Process.GetCurrentProcess()) { var memInfo = MemoryInformation.GetMemoryInfo(smapsReader); var isLowMemory = LowMemoryNotification.Instance.IsLowMemory(memInfo); var workingSet = PlatformDetails.RunningOnLinux ? MemoryInformation.GetRssMemoryUsage(currentProcess.Id) - memInfo.AvailableWithoutTotalCleanMemory.GetValue(SizeUnit.Bytes) : currentProcess.WorkingSet64; var cpuInfo = CpuUsage.Calculate(); var machineResources = new MachineResources { TotalMemory = memInfo.TotalPhysicalMemory.GetValue(SizeUnit.Bytes), AvailableMemory = memInfo.AvailableMemory.GetValue(SizeUnit.Bytes), AvailableWithoutTotalCleanMemory = memInfo.AvailableWithoutTotalCleanMemory.GetValue(SizeUnit.Bytes), SystemCommitLimit = memInfo.TotalCommittableMemory.GetValue(SizeUnit.Bytes), CommittedMemory = memInfo.CurrentCommitCharge.GetValue(SizeUnit.Bytes), ProcessMemoryUsage = workingSet, IsWindows = PlatformDetails.RunningOnPosix == false, IsLowMemory = isLowMemory, LowMemoryThreshold = LowMemoryNotification.Instance.LowMemoryThreshold.GetValue(SizeUnit.Bytes), CommitChargeThreshold = LowMemoryNotification.Instance.GetCommitChargeThreshold(memInfo).GetValue(SizeUnit.Bytes), MachineCpuUsage = cpuInfo.MachineCpuUsage, ProcessCpuUsage = Math.Min(cpuInfo.MachineCpuUsage, cpuInfo.ProcessCpuUsage) // min as sometimes +-1% due to time sampling }; return(machineResources); } }
public static MachineResources GetMachineResources() { using (var currentProcess = Process.GetCurrentProcess()) { var workingSet = PlatformDetails.RunningOnLinux == false ? currentProcess.WorkingSet64 : MemoryInformation.GetRssMemoryUsage(currentProcess.Id); var memoryInfoResult = MemoryInformation.GetMemoryInfo(); var cpuInfo = CpuUsage.Calculate(); var machineResources = new MachineResources { TotalMemory = memoryInfoResult.TotalPhysicalMemory.GetValue(SizeUnit.Bytes), SystemCommitLimit = memoryInfoResult.TotalCommittableMemory.GetValue(SizeUnit.Bytes), CommitedMemory = memoryInfoResult.CurrentCommitCharge.GetValue(SizeUnit.Bytes), ProcessMemoryUsage = workingSet, IsProcessMemoryRss = PlatformDetails.RunningOnPosix, MachineCpuUsage = cpuInfo.MachineCpuUsage, ProcessCpuUsage = Math.Min(cpuInfo.MachineCpuUsage, cpuInfo.ProcessCpuUsage) // min as sometimes +-1% due to time sampling }; return(machineResources); } }
public static MachineResources GetMachineResources() { var currentProcess = Process.GetCurrentProcess(); var workingSet = PlatformDetails.RunningOnPosix == false || PlatformDetails.RunningOnMacOsx ? currentProcess.WorkingSet64 : MemoryInformation.GetRssMemoryUsage(currentProcess.Id); var memoryInfoResult = MemoryInformation.GetMemoryInfo(); var installedMemory = memoryInfoResult.InstalledMemory.GetValue(SizeUnit.Bytes); var availableMemory = memoryInfoResult.AvailableMemory.GetValue(SizeUnit.Bytes); var mappedSharedMem = LowMemoryNotification.GetCurrentProcessMemoryMappedShared(); var shared = mappedSharedMem.GetValue(SizeUnit.Bytes); var cpuInfo = CpuUsage.Calculate(); var machineResources = new MachineResources { TotalMemory = installedMemory, MachineMemoryUsage = installedMemory - availableMemory, ProcessMemoryUsage = workingSet, ProcessMemoryExcludingSharedUsage = Math.Max(workingSet - shared, 0), MachineCpuUsage = cpuInfo.MachineCpuUsage, ProcessCpuUsage = cpuInfo.ProcessCpuUsage }; return(machineResources); }
public static MachineResources GetMachineResources(SmapsReader smapsReader, ICpuUsageCalculator cpuUsageCalculator) { var memInfo = MemoryInformation.GetMemoryInfo(smapsReader, extendedInfo: true); var cpuInfo = cpuUsageCalculator.Calculate(); var machineResources = new MachineResources { TotalMemory = memInfo.TotalPhysicalMemory.GetValue(SizeUnit.Bytes), AvailableMemory = memInfo.AvailableMemory.GetValue(SizeUnit.Bytes), AvailableWithoutTotalCleanMemory = memInfo.AvailableWithoutTotalCleanMemory.GetValue(SizeUnit.Bytes), SystemCommitLimit = memInfo.TotalCommittableMemory.GetValue(SizeUnit.Bytes), CommittedMemory = memInfo.CurrentCommitCharge.GetValue(SizeUnit.Bytes), ProcessMemoryUsage = memInfo.WorkingSet.GetValue(SizeUnit.Bytes), IsWindows = PlatformDetails.RunningOnPosix == false, IsLowMemory = LowMemoryNotification.Instance.IsLowMemory(memInfo, smapsReader), LowMemoryThreshold = LowMemoryNotification.Instance.LowMemoryThreshold.GetValue(SizeUnit.Bytes), CommitChargeThreshold = LowMemoryNotification.Instance.GetCommitChargeThreshold(memInfo).GetValue(SizeUnit.Bytes), MachineCpuUsage = cpuInfo.MachineCpuUsage, ProcessCpuUsage = cpuInfo.ProcessCpuUsage }; return(machineResources); }