From patchwork Thu Oct 19 14:31:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matan Azrad X-Patchwork-Id: 30596 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6DB371B22B; Thu, 19 Oct 2017 16:32:33 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0070.outbound.protection.outlook.com [104.47.2.70]) by dpdk.org (Postfix) with ESMTP id AE6341B229 for ; Thu, 19 Oct 2017 16:32:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BMMolcaWvBVCCySxcdScVqZNnMWMRmcvXYwUg2J5FL0=; b=i9ARxlCbgQ0rp7+OuaZRtP/rtIm5PvH8Mn8ZFz//3o9REdNFEDohISgUN2m/2paADpFD/1r+2eDBrl86aXc2JVun2n5Dxt7CW2tSc8flE/t/DvOoGB5QJcnKQ37oAWjxMbe31/Ci07eT0uvPIiZSpnwb6ATgduCR7hVw6OyyISM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; Received: from mellanox.com (37.142.13.130) by HE1PR0502MB3049.eurprd05.prod.outlook.com (2603:10a6:3:d9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Thu, 19 Oct 2017 14:32:30 +0000 From: Matan Azrad To: Gaetan Rivet Cc: dev@dpdk.org Date: Thu, 19 Oct 2017 14:31:54 +0000 Message-Id: <1508423514-28557-1-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1508139710-12798-1-git-send-email-matan@mellanox.com> References: <1508139710-12798-1-git-send-email-matan@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR09CA0087.eurprd09.prod.outlook.com (2603:10a6:802:29::31) To HE1PR0502MB3049.eurprd05.prod.outlook.com (2603:10a6:3:d9::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 83ade25c-0d2a-49c5-75e0-08d516fe3b47 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:HE1PR0502MB3049; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0502MB3049; 3:1phqZKUco2dBzxD5zupMHtO3NVNsTzRg3av6pDUKKg1CT/+ijKXYhODNelMnlwMIgAmD3F8VmjZa8hQebUsu35ZTieX/hpRo2AEmCPAGBrXm5KaD2KKUEOVSP3nfny+YNu0JCUvFh6fbWd4QDoIbJUNCztnYI8xHVHCD1+RNY1CcHABp8x6Iy8ckR1/Gt1TW25F3bp5tQHZoRKLE3ahB82ht2QtS905bIxP7fe1yuDu8k4enYXf5KKBOSIvxNg3V; 25:yXAQcFUxJml+f+D3EI4nlvMR/9ob0QhU856dFZNxnC3C1FuCd+oH3xrxyMDK+37mu47f4cOKj0kdJYuGzM5oFk27SSn4jA1rA/h6HzNgM+LLrvld9eQKKRZCAJ65iuiB2852pwQfPjpfGy4u9rktbBgECuuaU/HTnkV5B9agRwAN7GXihi7Wj/ysw0ve+AE1FI9xEDOPnp1+pyf2HdMZ2p+r1JuGpufO0Vu6l6VF2OBz+KqgPgYv0QEsxjGhZZlV+t4b03PlT6oHukhVYcsdjxrzw8IUWfQAulm7+6PDm4mwPi6nZ81PgtndW51l6+gQBJ+sBceVf4B9Y0+aaJfdxg==; 31:0ooztyW4VgSg34RB6Zn0DBR76kJABFEGt3nn3s29HizJksL3QgWvS+v3hnJXn1ZcTb8aYzuzG/cb9Qk/O7YkpvBee3s054RsQz363X18YawqIY43WBbzp1yDOmvJWVyKch0By5g3mpMWZSHdXSdmc1ej9NmxSN/8C8HSoPoBoMNTMzPGo1inZE92vyRoQMxf+LOFGXGSykJrF6PXQE6BvE74CyIkxvxJ5bYfhH4MQC4= X-MS-TrafficTypeDiagnostic: HE1PR0502MB3049: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0502MB3049; 20:CzXx9goUoJZUY+5CRMWoZnSiWMnXNIks/FUDYSnhKT9G0qA1fhipj4MSh8FubM/6P2Zot6+VYJdEm/gM4fzv9OS3Ob/Y5W6i4HaMByFArRy96dbwsPuHmkmC0gMcGGAqrxf4adE9Jc+408sF+75ydAJUpYyu+djSqCu4cHcleFIhU3HQc/6ZR6jRGnckgs6E1zo2DK872ePuhW75KkRo//GP1+XEkawOijfuREGnFTh4SS4vXssxU2whzQThYrUVJ05DStNkelbahGfWWeEWKZ34rWoxDXir+2w/HUMmmIYFjXP76Nj9LwK7NINbhvORpyJTsivOrgLiYdHkEQb8YBi/qrEQ/ZPcidQzi+POk4bbRn6aSReP2+tcuUELFeOpe5SBMxm71a1csgWxkpVF8cONC9605vcGRHfqscm7gufUFZXDwedqqQpFcr2IjXCRg9M6rnstmBvFJXTRqgbuHMu4ofVphOmZPLOdpwYo+NKTbsSGqSIzSuI5dtq6et8q; 4:s2wdfseWongCSkrz1IS19YP2ViQeTg2CYN3Wm9+scI42irEpoRlPV1uFX88cOg1S8WEIRZpfHowHXs3Sz+4EC4aGfddgX2wh/xjfKRRNAPuBHbXGddjE3MD1eyFY8szfhVWzTd/4WuOsM+rE5AZOD4arU64i6manhXeby6r/Istk5HIRHefGGfIDXCfz8Sr8tpBvw6Sf45cZfdyIYlZwZQq2QBG811Xm6uJDkSPqE0ydGNbJuI2naYSNiH9DtpjZ X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0502MB3049; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0502MB3049; X-Forefront-PRVS: 0465429B7F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(39860400002)(376002)(199003)(189002)(86362001)(2950100002)(6916009)(76176999)(50986999)(8676002)(101416001)(5660300001)(81166006)(478600001)(305945005)(36756003)(81156014)(4720700003)(69596002)(33026002)(50226002)(68736007)(6116002)(8936002)(3846002)(25786009)(66066001)(50466002)(7736002)(21086003)(5003940100001)(4326008)(48376002)(53936002)(106356001)(47776003)(6666003)(105586002)(55016002)(33646002)(316002)(16526018)(97736004)(16586007)(2906002)(189998001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0502MB3049; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0502MB3049; 23:oK1gTyfGPOmd0bMumvp7NXqDcBHbf92YZZGfIPF?= 36THxLSyfl5nknLCpKowFofIANQzAKvo2U2AgoHbRi7IP6ldGGJGjDZTpdnFywUgXAkUsUQKPrOtGe8utA2vOjwBRp2j6H0HAkdgSwP2zah4wKihDjwUYaeXWQc3fJCS9+z9MUSAmt5SjwXUwRi85yXs0GsNaokVvdzS+IJligSPYLA5JqPEQbVaGR3n63XwhU8iWp7Mls0B8wRgz1fnvB+WhBro2PSCixeCG/r/HkjacIMMIJpkE3nhkU8P1Ej9sLKJ1AOqzp35O2DYzFCfibxvxYLoLs1w5f7u7w+9IQggzJV25YaUxhMcwzmm4ETDhlpn6H0FHNzGf6khxLedZfn4uwBTK12EY6ElzAA1uYs3Ugxb4EA/dP37nOOHS0lZu10OQBfHmZPZGG3TX1GDLMf3FMzrkU53PlrbOdbJy7Gme+pcpLGdEguvK7UNg1CgZ1kK34AY2z8t4F65cKY2tXjHYuBAGc2L7ccxS8z8bgFM1aj+fTXXt5GNrD3Y45PdJL+FnqP6wC4RWw8T/H6Ydu8RlMfV2JdGMWwrWNQ4yTnX8hZTXW/e6yPH8LppcYuyWgDPYHRQil5QTf/4HkC6DKSSVBYnr4pggbbnvi9PV1Y1XJMjsaHws4+NthA29RltCkjnXDKsjVxIQJBw0S4ozCn9VJeLsxnxWeS2hivE+nnxHz2Oi/JBkguadil5BHNuwEbRQmvBB6ePoIxovIx/f9ZSoZd1U1rHC876g/mv3KlawNrRrLEgOfF9oh9e8G9UIaXPhilBQUItx8CppJBzaqBm30I+C9oQE5PjiwpONKNX945DS4Kdjh4u1XeC4QVENApp7wnMM9GhypFMsQFttMUUpt9eL0qc+c2B2LCY9pI5Hf3GAMfKxSwpU0vNS2pTYCl9WrvwoemYf4Jb7oPpVTfqzRLG6wjN9axgyUsYEDiYaWVMKdNxnkA25rLZvIcvp47Jq3hzU9+Y76vfLikvchdjeN/jn+iCp+Gdyv7vI2F9Jpta2/HUTX5hSPlpB3DvNjKRp+5R3qMsfLdCgp/h1zRBtZs+2N/Nuh2Hxgvo0Ewq46dqxlRSua5b4EtGoWZZVw7YPZi8/BNJtPIaxgBFyV/c2 X-Microsoft-Exchange-Diagnostics: 1; HE1PR0502MB3049; 6:7KKQQmwoj2PtqFsR0V61E+Q5A3XFlLsMhfp7Diw3I6Hwq3rpyindM4K0zGlLDBYmyPyYREdYttyAUECp2T/GT+GZquelSXWLCBBKVQfTS0oc2De94oGsXRK4S8LaB9YibuDZ6UN1iatdG2tXwjZOkAwrw7IE9IpX6S9pss8vePqjCK4SXmRi0eDcDlnfMB+8bwpF3daFrYc9zyJaaMGeZPtj2JlEnNb03v3qd12RA2sZozEZkm9q9/6We43NBjraOfWw7J8JWdlJ0UTIgGAN7s9CNR58D4oaN/VyD2CwVw/ZLtf8D0nc7GWl8/8tmLqZ3NqjoCVjbnyk6eiHlSAKiw==; 5:iFwg6iLFh2ZWTMSQjGqAVKWFdbUAba1WxQeQk5ExRF/O3Q/7stlpugrlN8OZUXWAVn8MAsx+LepysxouzWrOtq6BQ/MVMcjmo7BS/7+9OXC0+6P5f57QS4AJ4dUWExqPAeQWFGhqpjC+zJtZc03+GA==; 24:XPmpp615FJdvhU5sJPuFRYJTzSxjcaSeOg5kJuY8GZTWhOnfO/JUDR6b0FAxPS0EteJFlpM5dpHFQ9eeaeyJIy3t8Y07Ks4J1LKH3AUQxNQ=; 7:OvxXBRemai6E9BFA77ufkZX5tAK+D8NIi16f3abn6ckn+c3vO6yCeFjMc7rIi/31YZxLcFI4SRJcQIJ3jpCgfdzJ7x371iuohqGCN/U8Rs3jFiTOhyRV3d3wLs6FfadgUkIe1K9M8iLVERdkmq0xDcWs490BfZ/F6TQrbIWKnsOSO+kppIj0jyXQpUZKYF8jlVlAVSGBDYj5juDBy3+DmaY1TOigbdm/DVcRPPVLymM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2017 14:32:30.8586 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0502MB3049 Subject: [dpdk-dev] [PATCH v2] net/failsafe: improve stats accuracy X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The stats_get API was changed to signal a potential failure to read stats. Furthermore, some PMDs are able to provide statistics even after a removal event occurred. Considering this, the fail-safe can try to access the latest statistics of a PMD to improve statistics accuracy. Attempt an ultimate statistics read on removal time; if that fails, use the latest recorded snapshot. Signed-off-by: Matan Azrad --- drivers/net/failsafe/failsafe_ether.c | 19 +++++++++++++++++-- drivers/net/failsafe/failsafe_ops.c | 10 ++++++++-- drivers/net/failsafe/failsafe_private.h | 7 ++++++- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index f4db423..df38360 100644 --- a/drivers/net/failsafe/failsafe_ether.c +++ b/drivers/net/failsafe/failsafe_ether.c @@ -35,6 +35,7 @@ #include #include +#include #include "failsafe_private.h" @@ -312,9 +313,23 @@ static void fs_dev_stats_save(struct sub_device *sdev) { + struct rte_eth_stats stats; + int err; + + /* Attempt to read current stats. */ + err = rte_eth_stats_get(PORT_ID(sdev), &stats); + if (err) { + uint64_t cycles = sdev->stats_snapshot.cycles; + + WARN("Could not access latest statistics from sub-device %d.\n", + SUB_ID(sdev)); + if (cycles != 0) + WARN("Using latest snapshot taken before %lu seconds.\n", + (rte_rdtsc() - cycles) / rte_get_tsc_hz()); + } failsafe_stats_increment(&PRIV(sdev->fs_dev)->stats_accumulator, - &sdev->stats_snapshot); - memset(&sdev->stats_snapshot, 0, sizeof(struct rte_eth_stats)); + err ? &sdev->stats_snapshot.stats : &stats); + memset(&sdev->stats_snapshot, 0, sizeof(sdev->stats_snapshot)); } static inline int diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index d360965..818f12d 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "failsafe_private.h" @@ -592,13 +593,18 @@ rte_memcpy(stats, &PRIV(dev)->stats_accumulator, sizeof(*stats)); FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) { - ret = rte_eth_stats_get(PORT_ID(sdev), &sdev->stats_snapshot); + struct rte_eth_stats *snapshot = &sdev->stats_snapshot.stats; + uint64_t *cycles = &sdev->stats_snapshot.cycles; + + ret = rte_eth_stats_get(PORT_ID(sdev), snapshot); if (ret) { ERROR("Operation rte_eth_stats_get failed for sub_device %d with error %d", i, ret); + *cycles = 0; return ret; } - failsafe_stats_increment(stats, &sdev->stats_snapshot); + *cycles = rte_rdtsc(); + failsafe_stats_increment(stats, snapshot); } return 0; } diff --git a/drivers/net/failsafe/failsafe_private.h b/drivers/net/failsafe/failsafe_private.h index d343ebf..1df52f4 100644 --- a/drivers/net/failsafe/failsafe_private.h +++ b/drivers/net/failsafe/failsafe_private.h @@ -93,6 +93,11 @@ enum dev_state { DEV_STARTED, }; +struct fs_stats { + struct rte_eth_stats stats; + uint64_t cycles; +}; + struct sub_device { /* Exhaustive DPDK device description */ struct rte_devargs devargs; @@ -103,7 +108,7 @@ struct sub_device { /* Device state machine */ enum dev_state state; /* Last stats snapshot passed to user */ - struct rte_eth_stats stats_snapshot; + struct fs_stats stats_snapshot; /* Some device are defined as a command line */ char *cmdline; /* fail-safe device backreference */