Message ID | 1443606022-13581-2-git-send-email-harry.van.haaren@intel.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BC4A78DA6; Wed, 30 Sep 2015 11:40:54 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 1A6C58D36 for <dev@dpdk.org>; Wed, 30 Sep 2015 11:40:52 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 30 Sep 2015 02:40:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,611,1437462000"; d="scan'208";a="571197897" Received: from sie-lab-212-222.ir.intel.com (HELO silpixa00366884.ir.intel.com) ([10.237.212.222]) by FMSMGA003.fm.intel.com with ESMTP; 30 Sep 2015 02:40:49 -0700 From: Harry van Haaren <harry.van.haaren@intel.com> To: dev@dpdk.org Date: Wed, 30 Sep 2015 10:40:12 +0100 Message-Id: <1443606022-13581-2-git-send-email-harry.van.haaren@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1443606022-13581-1-git-send-email-harry.van.haaren@intel.com> References: <1443606022-13581-1-git-send-email-harry.van.haaren@intel.com> Subject: [dpdk-dev] [PATCH v2 01/11] doc: add extended statistics notes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Van Haaren, Harry
Sept. 30, 2015, 9:40 a.m. UTC
Add release notes for this patchset.
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
---
doc/guides/rel_notes/release_2_2.rst | 12 ++++++++++++
1 file changed, 12 insertions(+)
Comments
This patchset adds an implementation of the xstats_get() and xstats_reset() API to the following PMDs: virtio, igb, igbvf, ixgbe, ixgbevf, i40e, i40evf and fm10k. The xstats API allows DPDK apps to gain access to extended statistics from each port on a NIC. These statistics are structured as per a scheme detailed in the patch for the doc/prog_guide. Harry van Haaren (11): doc: add extended statistics notes doc: add extended statistics to prog_guide ethdev: update xstats_get() strings and Q handling virtio: add xstats() implementation igb: add xstats() implementation igbvf: add xstats() implementation ixgbe: update statistic strings to scheme ixgbevf: add xstats() functions to VF i40e: add xstats() implementation i40evf: add xstats() implementation fm10k: add xstats() implementation doc/guides/prog_guide/poll_mode_drv.rst | 51 ++++- doc/guides/rel_notes/release_2_2.rst | 12 ++ drivers/net/e1000/igb_ethdev.c | 194 +++++++++++++++++- drivers/net/fm10k/fm10k_ethdev.c | 87 ++++++++ drivers/net/i40e/i40e_ethdev.c | 265 +++++++++++++++++++++++- drivers/net/i40e/i40e_ethdev_vf.c | 89 +++++++- drivers/net/ixgbe/ixgbe_ethdev.c | 346 +++++++++++++++++++++++++++++--- drivers/net/virtio/virtio_ethdev.c | 98 ++++++++- drivers/net/virtio/virtio_rxtx.c | 32 +++ drivers/net/virtio/virtqueue.h | 4 + lib/librte_ether/rte_ethdev.c | 38 ++-- 11 files changed, 1154 insertions(+), 62 deletions(-)
Hi Harry,
We are planning on using the xstats API for periodic stats collection through a polling thread. This would be done in a generic NIC agnostic manner, which would require that the xstats identifiers have consistent naming amongst all of the NIC types. It would likely be polled several times per second and would only gather a subset of all available xstats types.
I have reviewed your patches and am interested in providing some API enhancements and bugfixes. Are you willing to provide feedback on such changes?
Thank you,
Tom
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Harry van Haaren
Sent: Thursday, October 22, 2015 11:48 AM
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v3 00/11] Port XStats
This patchset adds an implementation of the xstats_get() and xstats_reset() API to the following PMDs: virtio, igb, igbvf, ixgbe, ixgbevf, i40e, i40evf and fm10k.
The xstats API allows DPDK apps to gain access to extended statistics from each port on a NIC. These statistics are structured as per a scheme detailed in the patch for the doc/prog_guide.
Harry van Haaren (11):
doc: add extended statistics notes
doc: add extended statistics to prog_guide
ethdev: update xstats_get() strings and Q handling
virtio: add xstats() implementation
igb: add xstats() implementation
igbvf: add xstats() implementation
ixgbe: update statistic strings to scheme
ixgbevf: add xstats() functions to VF
i40e: add xstats() implementation
i40evf: add xstats() implementation
fm10k: add xstats() implementation
doc/guides/prog_guide/poll_mode_drv.rst | 51 ++++-
doc/guides/rel_notes/release_2_2.rst | 12 ++
drivers/net/e1000/igb_ethdev.c | 194 +++++++++++++++++-
drivers/net/fm10k/fm10k_ethdev.c | 87 ++++++++
drivers/net/i40e/i40e_ethdev.c | 265 +++++++++++++++++++++++-
drivers/net/i40e/i40e_ethdev_vf.c | 89 +++++++-
drivers/net/ixgbe/ixgbe_ethdev.c | 346 +++++++++++++++++++++++++++++---
drivers/net/virtio/virtio_ethdev.c | 98 ++++++++-
drivers/net/virtio/virtio_rxtx.c | 32 +++
drivers/net/virtio/virtqueue.h | 4 +
lib/librte_ether/rte_ethdev.c | 38 ++--
11 files changed, 1154 insertions(+), 62 deletions(-)
--
1.9.1
On Wed, 28 Oct 2015 17:35:09 +0000 Tom Crugnale <tcrugnale@sandvine.com> wrote: > Hi Harry, > > We are planning on using the xstats API for periodic stats collection through a polling thread. This would be done in a generic NIC agnostic manner, which would require that the xstats identifiers have consistent naming amongst all of the NIC types. It would likely be polled several times per second and would only gather a subset of all available xstats types. > > I have reviewed your patches and am interested in providing some API enhancements and bugfixes. Are you willing to provide feedback on such changes? > > Thank you, > Tom The whole point of xstats is to allow device specific statistics. Consistent use of names is good from a user interface point of view, but probably not a hard requirement.
I understand. Is this the reason that that strings were used to identify the xstat types? An enum type would be much more efficient instead of doing string copies when retrieving the stats, but the number of enum entries would quickly grow out of control as device specific stats were added. In this case, I'm actually referring to the stats that are common to all NICs. For example, for the received fragmented packets counter, there are three strings that identify this value: rx_fragment_packets (igb), rx_fragment_errors (ixgbe), rx_fragmented_packets (i40e). I was thinking of making those names consistent. Perhaps the reason why they were different in the first place is that each of the device datasheets refers to these exact names. Tom -----Original Message----- From: Stephen Hemminger [mailto:stephen@networkplumber.org] Sent: Wednesday, October 28, 2015 5:32 PM To: Tom Crugnale Cc: Harry van Haaren; dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v3 00/11] Port XStats On Wed, 28 Oct 2015 17:35:09 +0000 Tom Crugnale <tcrugnale@sandvine.com> wrote: > Hi Harry, > > We are planning on using the xstats API for periodic stats collection through a polling thread. This would be done in a generic NIC agnostic manner, which would require that the xstats identifiers have consistent naming amongst all of the NIC types. It would likely be polled several times per second and would only gather a subset of all available xstats types. > > I have reviewed your patches and am interested in providing some API enhancements and bugfixes. Are you willing to provide feedback on such changes? > > Thank you, > Tom The whole point of xstats is to allow device specific statistics. Consistent use of names is good from a user interface point of view, but probably not a hard requirement.
Stephen, Ultimately the issue we are trying to solve is that there is no device independent way to get any detailed statistics from NICs controlled by DPDK. These statistics are quite useful, not just for diagnostics, but for long term reporting. People using DPDK-based NFV products in a production environment are not going to be happy that they cannot, for example, see how the packet size bucket counters varied over time using some sort of monitoring tool. The only alternative I can see to providing an API within DPDK is to build our own abstraction layer triggered off the driver name/pci ids/etc. I expect other people would end up doing this as well. This seems like a waste of effort when an abstraction layer already exists within DPDK. So, let's consider solving the problem within DPDK. One option is to use well-defined names for a given xstat that has the same semantics across NICs, while continuing to allow NICs to expose any stats that don't fall into this category. Another option is to provide an API with a well-defined set of stats, perhaps using an enum. In order for a stat to be added to this list, it needs to be part of a standard (such as http://tools.ietf.org/html/rfc2819). Does anybody else see the need for something like this? We're more than willing to do the work. We'd like to make sure we have the right API, though. Thanks, Kyle On Wed, Oct 28, 2015 at 8:55 PM, Tom Crugnale <tcrugnale@sandvine.com> wrote: > I understand. Is this the reason that that strings were used to identify the xstat types? An enum type would be much more efficient instead of doing string copies when retrieving the stats, but the number of enum entries would quickly grow out of control as device specific stats were added. > > In this case, I'm actually referring to the stats that are common to all NICs. For example, for the received fragmented packets counter, there are three strings that identify this value: rx_fragment_packets (igb), rx_fragment_errors (ixgbe), rx_fragmented_packets (i40e). > I was thinking of making those names consistent. Perhaps the reason why they were different in the first place is that each of the device datasheets refers to these exact names. > > Tom > > -----Original Message----- > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > Sent: Wednesday, October 28, 2015 5:32 PM > To: Tom Crugnale > Cc: Harry van Haaren; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v3 00/11] Port XStats > > On Wed, 28 Oct 2015 17:35:09 +0000 > Tom Crugnale <tcrugnale@sandvine.com> wrote: > >> Hi Harry, >> >> We are planning on using the xstats API for periodic stats collection through a polling thread. This would be done in a generic NIC agnostic manner, which would require that the xstats identifiers have consistent naming amongst all of the NIC types. It would likely be polled several times per second and would only gather a subset of all available xstats types. >> >> I have reviewed your patches and am interested in providing some API enhancements and bugfixes. Are you willing to provide feedback on such changes? >> >> Thank you, >> Tom > > The whole point of xstats is to allow device specific statistics. > Consistent use of names is good from a user interface point of view, but probably not a hard requirement. >
2015-10-29 08:55, Kyle Larose: > Ultimately the issue we are trying to solve is that there is no device > independent way to get any detailed statistics from NICs controlled by > DPDK. These statistics are quite useful, not just for diagnostics, but > for long term reporting. People using DPDK-based NFV products in a > production environment are not going to be happy that they cannot, for > example, see how the packet size bucket counters varied over time > using some sort of monitoring tool. I don't understand. The basic statistics are provided in a common API. The other ones are not available in every NICs and can only be interpreted while knowing the device. So what is the need exactly? Do you know an example of a networking layer having this kind of API?
Hi All, (Please keep everyone on To/CC - a few people were dropped) Note: During my writing a reply to Kyle, Thomas has also replied to Kyle. > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Kyle Larose > Sent: Thursday, October 29, 2015 12:55 PM > To: Tom Crugnale; Stephen Hemminger > Cc: dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v3 00/11] Port XStats > Ultimately the issue we are trying to solve is that there is no device > independent way to get any detailed statistics from NICs controlled by > DPDK. These statistics are quite useful, not just for diagnostics, but > for long term reporting. People using DPDK-based NFV products in a > production environment are not going to be happy that they cannot, for > example, see how the packet size bucket counters varied over time > using some sort of monitoring tool. Agreed, and that's what the xstats solves. > So, let's consider solving the problem within DPDK. One option is to > use well-defined names for a given xstat that has the same semantics > across NICs, while continuing to allow NICs to expose any stats that > don't fall into this category. Yes, this is the aim of the current xstats also. As Tom Crugnale pointed out, the current implementation has some variation in string names, however the end-goal is to have consistent naming across NICs. The scheme for naming stats is described in a doc patch, which was part of my patchset: http://dpdk.org/dev/patchwork/patch/7906/ Ideally a script will automatically checks stats names against those of other NICs, allowing switching of NICs and stats remaining consistent. Given that each NIC is unique, this will require some organization work, but it seems possible with some collaboration. > Another option is to provide an API with a well-defined set of stats, > perhaps using an enum. In order for a stat to be added to this list, > it needs to be part of a standard (such as > http://tools.ietf.org/html/rfc2819). I would prefer see xstats gain wider support instead of discussing other options. > Does anybody else see the need for something like this? Yes. Cheers, -Harry
On Thu, Oct 29, 2015 at 9:10 AM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote: > I don't understand. > The basic statistics are provided in a common API. > The other ones are not available in every NICs and can only be interpreted > while knowing the device. So what is the need exactly? The need is to provide information to users about what sort of traffic is being seen by the device, and why the hardware is behaving the way it is, leveraging as much as possible the capabilities of the hardware with minimal effort (i.e. not implementing an abstraction layer at a higher level). These are quite useful for diagnosing wider network issues (configuration, misbehaving devices, dirty fibers/etc). The common API doesn't expose the more detailed information requested by the various ethernet mibs. Of course, not all stats are applicable to all devices (e.g. collisions), but those that are available are still invaluable. > Do you know an example of a networking layer having this kind of API? I have worked with SDKs for a few different physical switches and NPUs. They all provide this sort of API. I think it is quite common with networking equipment such as routers or switches. These stats tend to be exposed over SNMP at the very least, and often within local utilities on the devices themselves. Thanks, Kyle
2015-10-29 09:57, Kyle Larose: > On Thu, Oct 29, 2015 at 9:10 AM, Thomas Monjalon > <thomas.monjalon@6wind.com> wrote: > > > I don't understand. > > The basic statistics are provided in a common API. > > The other ones are not available in every NICs and can only be interpreted > > while knowing the device. So what is the need exactly? > > The need is to provide information to users about what sort of traffic > is being seen by the device, and why the hardware is behaving the way > it is, leveraging as much as possible the capabilities of the hardware > with minimal effort (i.e. not implementing an abstraction layer at a > higher level). > > These are quite useful for diagnosing wider network issues > (configuration, misbehaving devices, dirty fibers/etc). The common API > doesn't expose the more detailed information requested by the various > ethernet mibs. Of course, not all stats are applicable to all devices > (e.g. collisions), but those that are available are still invaluable. Thanks for the explanation. > > Do you know an example of a networking layer having this kind of API? > > I have worked with SDKs for a few different physical switches and > NPUs. They all provide this sort of API. I think it is quite common > with networking equipment such as routers or switches. These stats > tend to be exposed over SNMP at the very least, and often within local > utilities on the devices themselves. So what is missing currently? Just having a consistent naming of similar counters?
On Thu, Oct 29, 2015 at 10:01 AM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote: > So what is missing currently? Just having a consistent naming of > similar counters? A consistent naming scheme would certainly solve the problem. Thanks again, Kyle
diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst index 9a70dae..35f26d5 100644 --- a/doc/guides/rel_notes/release_2_2.rst +++ b/doc/guides/rel_notes/release_2_2.rst @@ -4,6 +4,18 @@ DPDK Release 2.2 New Features ------------ +* **Extended Statistics** + + Define extended statistics naming scheme to store metadata in the name + string name of each statistic. Implemented the extended stats API for + these PMDs: + + * igb + * igbvf + * i40e + * i40evf + * fm10k + * virtio Resolved Issues ---------------