From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9FF82433B7; Fri, 24 Nov 2023 10:26:27 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8EA35402B3; Fri, 24 Nov 2023 10:26:27 +0100 (CET) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by mails.dpdk.org (Postfix) with ESMTP id E8CED40283 for ; Fri, 24 Nov 2023 10:26:25 +0100 (CET) Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-40859dee28cso13353415e9.0 for ; Fri, 24 Nov 2023 01:26:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; t=1700817985; x=1701422785; darn=dpdk.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ZE/vJVsLW99LkiyCFKDWMhW0lZ13u3igtwEu9YnAkm8=; b=XyWamBXXeUCnko7LDiUEkzPbr56U0tbnY9oVfRx1+jgjfVSomVilOgEYQ75dGd63mx khkMbCi4jhxtlljeSQx/ftuNsfiX2wlVBIaxxnLL/9Eb/O50a5Gx+ekc4dcl6RqVwPVW HP0OnFVAJZUagGcC00n3tBTlH+kBvDSdex8oletl0IEUZvm9WjHNZdk0sx9delNyHwsn WA6qX6y29FVADlytRwmeXvheMKet6XqUYuxXDenZkRMbFHDmlQVm4oJ7U63Kkmcp8zsj 8aC1+NyWSpU++1e2VULDz8Ez6FEEJJr/BYjj/Ie5zHq780WO4D4FTQMJhEfbDZdoSpu5 FdpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700817985; x=1701422785; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ZE/vJVsLW99LkiyCFKDWMhW0lZ13u3igtwEu9YnAkm8=; b=dmqCWDJHwxD9pn+6zman2nSx5xhsJwjbGBJ63asaooKZNfhwsT5/g3tDisD2vs6WMX xQVq2puKunOCHNsBTAaXggvo+xmo9/tY0bKHGLnzn1iozh7+RrpGPdFql8/9FK91vP+S Dl97UIh4eplcIxGehtzIawj0GaLAGcBV9Z/qR58+hjSB0hE3+CwCH4D9tyzDSWfFzxxy pojUwXmxUs4epCKeawRs32XSqNejYuY73c2aqWq4rdoDuD2a+tf9N7v4byRGrzUaL7aY RCCmeVNvfb7Mu0exLMpA1aMk5fg//+gly/9abIn8s8qlkhEO8GpQEOqWZPVHoadHAbBo nJgg== X-Gm-Message-State: AOJu0YyMxq7YmcrZOf6hzzdmljmlQqLPbTLPePRNhsDuduIqIA7Zr4PR h56mWDJq1HdTMMHg/dgJKxjQVg== X-Google-Smtp-Source: AGHT+IEUTLAm0YJMt5ZVoOIaNAe1gsSk/QqDVZIR3f7/79tWkP/bT6bXgcjoyF/OybTLhbQZIlzm5A== X-Received: by 2002:a05:600c:4f90:b0:40a:4c7e:6f3e with SMTP id n16-20020a05600c4f9000b0040a4c7e6f3emr1937826wmq.21.1700817985540; Fri, 24 Nov 2023 01:26:25 -0800 (PST) Received: from 6wind.com ([2a01:e0a:5ac:6460:c065:401d:87eb:9b25]) by smtp.gmail.com with ESMTPSA id p3-20020a1c7403000000b003feea62440bsm4402388wmc.43.2023.11.24.01.26.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Nov 2023 01:26:25 -0800 (PST) Date: Fri, 24 Nov 2023 10:26:24 +0100 From: Olivier Matz To: Edwin Brossette Cc: dev@dpdk.org, Maxime Coquelin Subject: Re: net/virtio: duplicated xstats Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Fix Maxime's mail. On Fri, Nov 24, 2023 at 10:18:27AM +0100, Edwin Brossette wrote: > Hello, > > I noticed a small inconsistency in the virtio pmd's xstats. > The stat "rx_q0_errors" appears twice. > I also think the stats "rx_q0_packets", "rx_q0_bytes", "tx_q0_packets" and > "tx_q0_bytes" are duplicates of "rx_q0_good_packets", "rx_q0_good_bytes", > "tx_q0_good_packets" and "tx_q0_good_bytes" > > I believe this issue probably appeared after this commit: > > f30e69b41f94: ethdev: add device flag to bypass auto-filled queue xstats > http://scm.6wind.com/vendor/dpdk.org/dpdk/commit/?id=f30e69b41f949cd4a9afb6ff39de196e661708e2 > > From what I understand, the rxq0_error stat was originally reported by the > librte. However, changes were made so it is reported by the pmd instead. > The flag RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS was temporarily set to keep the > old behaviour so that every pmd could have time to adapt the change. > But it seems the flag was forgotten in the virtio pmd and as a result, some > stats are fetched at two different times when displaying xstats. > > First in lib_rte_ethdev: > https://git.dpdk.org/dpdk/tree/lib/ethdev/rte_ethdev.c#n3266 > (you can see the check on the RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS flag before > the snprintf on eth_dev_rxq_stats_strings[] ) > > And a second time in the virtio pmd: > https://git.dpdk.org/dpdk/tree/drivers/net/virtio/virtio_ethdev.c#n705 pmd > (see the snprintf on rte_virtio_rxq_stat_strings[] ) > > This problem can be reproduced on testpmd simply by displaying the xstats > on a port with the net_virtio driver: > > Reproduction: > =========== > > 1) start dpdk-testpmd: > > modprobe -a uio_pci_generic > dpdk-devbind -b uio_pci_generic 03:00.0 > dpdk-devbind -b uio_pci_generic 04:00.0 > > dpdk-devbind -s > > Network devices using DPDK-compatible driver > ============================================ > 0000:03:00.0 'Virtio 1.0 network device 1041' drv=uio_pci_generic > unused=vfio-pci > 0000:04:00.0 'Virtio 1.0 network device 1041' drv=uio_pci_generic > unused=vfio-pci > [...] > > dpdk-testpmd -a 0000:03:00.0 -a 0000:04:00.0 -- -i --rxq=1 --txq=1 > --coremask=0x4 --total-num-mbufs=250000 > EAL: Detected CPU lcores: 3 > EAL: Detected NUMA nodes: 1 > EAL: Detected static linkage of DPDK > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket > EAL: Selected IOVA mode 'PA' > EAL: VFIO support initialized > EAL: Probe PCI driver: net_virtio (1af4:1041) device: 0000:03:00.0 (socket > -1) > EAL: Probe PCI driver: net_virtio (1af4:1041) device: 0000:04:00.0 (socket > -1) > Interactive-mode selected > Warning: NUMA should be configured manually by using --port-numa-config and > --ring-numa-config parameters along with --numa. > testpmd: create a new mbuf pool : n=250000, size=2176, socket=0 > testpmd: preferred mempool ops selected: ring_mp_mc > Configuring Port 0 (socket 0) > Port 0: 52:54:00:B0:8F:88 > Configuring Port 1 (socket 0) > Port 1: 52:54:00:EF:09:1F > Checking link statuses... > Done > > 2) port info: > > show port info 0 > > ********************* Infos for port 0 ********************* > MAC address: 52:54:00:B0:8F:88 > Device name: 0000:03:00.0 > Driver name: net_virtio > Firmware-version: not available > Devargs: > Connect to socket: 0 > memory allocation on the socket: 0 > Link status: up > Link speed: Unknown > Link duplex: full-duplex > Autoneg status: On > MTU: 1500 > Promiscuous mode: enabled > Allmulticast mode: disabled > Maximum number of MAC addresses: 64 > Maximum number of MAC addresses of hash filtering: 0 > VLAN offload: > strip off, filter off, extend off, qinq strip off > No RSS offload flow type is supported. > Minimum size of RX buffer: 64 > Maximum configurable length of RX packet: 9728 > Maximum configurable size of LRO aggregated packet: 0 > Current number of RX queues: 1 > Max possible RX queues: 1 > Max possible number of RXDs per queue: 32768 > Min possible number of RXDs per queue: 32 > RXDs number alignment: 1 > Current number of TX queues: 1 > Max possible TX queues: 1 > Max possible number of TXDs per queue: 32768 > Min possible number of TXDs per queue: 32 > TXDs number alignment: 1 > Max segment number per packet: 65535 > Max segment number per MTU/TSO: 65535 > Device capabilities: 0x0( ) > Device error handling mode: none > Device private info: > guest_features: 0x110af8020 > vtnet_hdr_size: 12 > use_vec: rx-0 tx-0 > use_inorder: rx-0 tx-0 > intr_lsc: 1 > max_mtu: 9698 > max_rx_pkt_len: 1530 > max_queue_pairs: 1 > req_guest_features: 0x8000005f10ef8028 > > 3) show port xstats: > > show port xstats 0 > ###### NIC extended statistics for port 0 > rx_good_packets: 0 > tx_good_packets: 0 > rx_good_bytes: 0 > tx_good_bytes: 0 > rx_missed_errors: 0 > rx_errors: 0 > tx_errors: 0 > rx_mbuf_allocation_errors: 0 > rx_q0_packets: 0 > rx_q0_bytes: 0 > rx_q0_errors: 0 <================== > tx_q0_packets: 0 > tx_q0_bytes: 0 > rx_q0_good_packets: 0 > rx_q0_good_bytes: 0 > rx_q0_errors: 0 <================== > rx_q0_multicast_packets: 0 > rx_q0_broadcast_packets: 0 > rx_q0_undersize_packets: 0 > rx_q0_size_64_packets: 0 > rx_q0_size_65_127_packets: 0 > rx_q0_size_128_255_packets: 0 > rx_q0_size_256_511_packets: 0 > rx_q0_size_512_1023_packets: 0 > rx_q0_size_1024_1518_packets: 0 > rx_q0_size_1519_max_packets: 0 > tx_q0_good_packets: 0 > tx_q0_good_bytes: 0 > tx_q0_multicast_packets: 0 > tx_q0_broadcast_packets: 0 > tx_q0_undersize_packets: 0 > tx_q0_size_64_packets: 0 > tx_q0_size_65_127_packets: 0 > tx_q0_size_128_255_packets: 0 > tx_q0_size_256_511_packets: 0 > tx_q0_size_512_1023_packets: 0 > tx_q0_size_1024_1518_packets: 0 > tx_q0_size_1519_max_packets: 0 > > You can see the stat "rx_q0_errors" appeared twice.