예제 #1
0
        public override Task <List <Node.MemoryUtilization> > GetMemoryUtilization(Node node, DateTime?start, DateTime?end, int?pointCount = null)
        {
            var wNode = _wmiNodes.FirstOrDefault(x => x.Id == node.Id);

            if (wNode == null)
            {
                return(Task.FromResult(new List <Node.MemoryUtilization>()));
            }

            Node.MemoryUtilization startVal = null;
            if (start.HasValue)
            {
                startVal = new Node.MemoryUtilization {
                    DateTime = start.Value
                };
            }
            Node.MemoryUtilization endVal = null;
            if (end.HasValue)
            {
                endVal = new Node.MemoryUtilization {
                    DateTime = end.Value
                };
            }
            return(FilterHistory(wNode.MemoryHistory, startVal, endVal, new MemoryUtilComparer()));
        }
        private void PollMemoryUtilization(WmiNode wmiNode)
        {
            var node = wmiNode.Node;

            const string query = @"select 
                AvailableKBytes 
                from Win32_PerfFormattedData_PerfOS_Memory";

            using (var q = Wmi.Query(node.Name, query))
            {
                var data = q.GetFirstResult();
                if (data == null)
                    return;

                var available = data.AvailableKBytes * 1024;
                node.MemoryUsed = node.TotalMemory - available;
                var utilization = new Node.MemoryUtilization
                {
                    DateTime = DateTime.UtcNow,
                    MaxMemoryUsed = node.MemoryUsed,
                    AvgMemoryUsed = node.MemoryUsed
                };
                wmiNode.AddMemoryUtilization(utilization);
            }
        }