static Util() { IsServer2008 = RuntimeInformation.OSDescription.Contains("6.1.7"); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && !IsServer2008) { CpuUsageSearch = new ManagementObjectSearcher("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name='_Total'"); } if (Env.IsRunningOnWindows) { Memorystatus mStatus = new Memorystatus(); GlobalMemoryStatus(ref mStatus); TotalMemory = Convert.ToInt64(mStatus.DwTotalPhys) / 1024 / 1024; } else { var lines = File.ReadAllLines("/proc/meminfo"); var infoDic = new Dictionary <string, long>(); foreach (var line in lines) { var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList(); infoDic.Add(datas[0], long.Parse(datas[1])); } TotalMemory = infoDic["MemTotal:"] / 1024; } }
static EnvironmentUtil() { #if NETFRAMEWORK IsWindows = true; #else IsWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); #endif var systemVersioin = Environment.OSVersion.Version.ToString(); IsServer2008 = systemVersioin.StartsWith("6.0") || systemVersioin.StartsWith("6.1"); if (IsWindows) { Memorystatus mStatus = new Memorystatus(); GlobalMemoryStatus(ref mStatus); TotalMemory = (int)(Convert.ToInt64(mStatus.DwTotalPhys) / 1024 / 1024); } else { var lines = File.ReadAllLines("/proc/meminfo"); var infoDic = new Dictionary <string, long>(); foreach (var line in lines) { var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList(); infoDic.Add(datas[0], long.Parse(datas[1])); } TotalMemory = (int)(infoDic["MemTotal:"] / 1024); } var interf = NetworkInterface.GetAllNetworkInterfaces().First(i => i.NetworkInterfaceType == NetworkInterfaceType.Ethernet); var unicastAddresses = interf.GetIPProperties().UnicastAddresses; IpAddress = unicastAddresses.First(a => a.IPv4Mask.ToString() != "255.255.255.255" && a.Address.AddressFamily == AddressFamily.InterNetwork).Address.ToString(); OSDescription = $"{Environment.OSVersion.Platform} {Environment.OSVersion.Version}"; }
public static long GetFreeMemory() { if (Env.IsRunningOnWindows) { Memorystatus mStatus = new Memorystatus(); GlobalMemoryStatus(ref mStatus); return(Convert.ToInt64(mStatus.DwAvailPhys) / 1024 / 1024); } else { var lines = File.ReadAllLines("/proc/meminfo"); var infoDic = new Dictionary <string, long>(); foreach (var line in lines) { var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList(); infoDic.Add(datas[0], long.Parse(datas[1])); } var free = infoDic["MemFree:"]; var sReclaimable = infoDic["SReclaimable:"]; return((free + sReclaimable) / 1024); } }
public static extern void GlobalMemoryStatus(ref Memorystatus lpBuffer);
private static extern bool GlobalMemoryStatus(ref Memorystatus lpBuffer);