Пример #1
0
            private async Task PollNetworkUtilizationAsync()
            {
                var utilizationTable = _canQueryAdapterUtilization
                                           ? "Win32_PerfRawData_Tcpip_NetworkAdapter"
                                           : "Win32_PerfRawData_Tcpip_NetworkInterface";

                var query = $@"
                    SELECT Name,
                           Timestamp_Sys100NS,
                           BytesReceivedPersec,
                           BytesSentPersec,
                           PacketsReceivedPersec,
                           PacketsSentPersec
                      FROM {utilizationTable}";

                var queryTime    = DateTime.UtcNow.ToEpochTime();
                var combinedUtil = new Interface.InterfaceUtilization
                {
                    DateEpoch = queryTime,
                    InAvgBps  = 0,
                    OutAvgBps = 0
                };

                using (var q = Wmi.Query(Endpoint, query))
                {
                    foreach (var data in await q.GetDynamicResultAsync().ConfigureAwait(false))
                    {
                        var perfData = new PerfRawData(this, data);
                        var name     = perfData.Identifier;
                        var iface    = Interfaces.Find(i => name == GetCounterName(i.Name));
                        if (iface == null)
                        {
                            continue;
                        }

                        iface.InBps  = (float)perfData.GetCalculatedValue("BytesReceivedPersec", 10000000);
                        iface.OutBps = (float)perfData.GetCalculatedValue("BytesSentPersec", 10000000);
                        iface.InPps  = (float)perfData.GetCalculatedValue("PacketsReceivedPersec", 10000000);
                        iface.OutPps = (float)perfData.GetCalculatedValue("PacketsSentPersec", 10000000);

                        var util = new Interface.InterfaceUtilization
                        {
                            DateEpoch = queryTime,
                            InAvgBps  = iface.InBps,
                            OutAvgBps = iface.OutBps
                        };

                        var netData = NetHistory.GetOrAdd(iface.Name, k => new List <Interface.InterfaceUtilization>(1024));
                        UpdateHistoryStorage(netData, util);

                        if (PrimaryInterfaces.Contains(iface))
                        {
                            combinedUtil.InAvgBps  += util.InAvgBps;
                            combinedUtil.OutAvgBps += util.OutAvgBps;
                        }
                    }
                }

                UpdateHistoryStorage(CombinedNetHistory, combinedUtil);
            }
Пример #2
0
            private async Task PollNetworkUtilization()
            {
                const string query = @"
SELECT Name,
       BytesReceivedPersec,
       BytesSentPersec,
       PacketsReceivedPersec,
       PacketsSentPersec
  FROM Win32_PerfFormattedData_Tcpip_NetworkInterface";

                var queryTime    = DateTime.UtcNow.ToEpochTime();
                var combinedUtil = new Interface.InterfaceUtilization
                {
                    DateEpoch = queryTime,
                    InAvgBps  = 0,
                    OutAvgBps = 0
                };

                using (var q = Wmi.Query(Name, query))
                {
                    foreach (var data in await q.GetDynamicResult())
                    {
                        if (data == null)
                        {
                            continue;
                        }
                        var iface = Interfaces.FirstOrDefault(i => data.Name == GetCounterName(i.Name));
                        if (iface == null)
                        {
                            continue;
                        }

                        iface.InBps  = data.BytesReceivedPersec;
                        iface.OutBps = data.BytesSentPersec;
                        iface.InPps  = data.PacketsReceivedPersec;
                        iface.OutPps = data.PacketsSentPersec;

                        var util = new Interface.InterfaceUtilization
                        {
                            DateEpoch = queryTime,
                            InAvgBps  = iface.InBps,
                            OutAvgBps = iface.OutBps
                        };

                        var netData = NetHistory.GetOrAdd(iface.Name, k => new List <Interface.InterfaceUtilization>(1024));
                        UpdateHistoryStorage(netData, util);

                        if (PrimaryInterfaces.Contains(iface))
                        {
                            combinedUtil.InAvgBps  += util.InAvgBps;
                            combinedUtil.OutAvgBps += util.OutAvgBps;
                        }
                    }
                }
                UpdateHistoryStorage(CombinedNetHistory, combinedUtil);
            }