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); }
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); }