コード例 #1
0
        // Este código es reuitlizado de  https://gunnarpeipman.com/dotnet-core-system-memory/
        private static MemoryMetrics GetUnixMemory()
        {
            var output = "";

            var info = new ProcessStartInfo("free -m");

            info.FileName  = "/bin/bash";
            info.Arguments = "-c \"free -m\"";
            info.RedirectStandardOutput = true;

            using (var process = Process.Start(info))
            {
                output = process.StandardOutput.ReadToEnd();
                Console.WriteLine(output);
            }

            var lines  = output.Split("\n");
            var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries);

            var metrics = new MemoryMetrics();

            metrics.Total = double.Parse(memory[1]);
            metrics.Used  = double.Parse(memory[2]);
            metrics.Free  = double.Parse(memory[3]);

            return(metrics);
        }
コード例 #2
0
        // Este código es reuitlizado de  https://gunnarpeipman.com/dotnet-core-system-memory/
        private static MemoryMetrics GetWindowsMetrics()
        {
            var output = "";

            var info = new ProcessStartInfo();

            info.FileName  = "wmic";
            info.Arguments = "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value";
            info.RedirectStandardOutput = true;

            using (var process = Process.Start(info))
            {
                output = process.StandardOutput.ReadToEnd();
            }

            var lines            = output.Trim().Split("\n");
            var freeMemoryParts  = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries);
            var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries);

            var metrics = new MemoryMetrics();

            metrics.Total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 0);
            metrics.Free  = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 0);
            metrics.Used  = metrics.Total - metrics.Free;

            return(metrics);
        }
コード例 #3
0
        public static string GetMemory()
        {
            try
            {
                var isUnix = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ||
                             RuntimeInformation.IsOSPlatform(OSPlatform.Linux);

                MemoryMetrics memoria = new MemoryMetrics();
                if (isUnix)
                {
                    memoria = GetUnixMemory();
                }
                else
                {
                    memoria = GetWindowsMetrics();
                }

                return($"TOTAL -> {memoria.Total} MB,  LIBRE->{memoria.Free} MB, USADA -> {memoria.Used} MB");
            }
            catch (Exception)
            {
                return(new NotImplementedException("Error No se encontro Nombre Maquina").ToString());
            }
        }