From patchwork Sat Oct 21 20:54:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matan Azrad X-Patchwork-Id: 30660 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 634241B328; Sat, 21 Oct 2017 22:55:08 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0041.outbound.protection.outlook.com [104.47.1.41]) by dpdk.org (Postfix) with ESMTP id 657D71B300 for ; Sat, 21 Oct 2017 22:55:02 +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=TPidq6tg+y2xLDD2pFuFwXxu9pFQOJrlpce0lEW4vs4=; b=clMuuhaZ9U+TJqHRCZq6kGV1bqLOiQ2IlfMYwvKk+QWb61cC2yfNSsRSwP645r+EC/2ZU2lrN6Hm25IWYnu5jFKK4CDe/wYTfPZ7ansPjfI3RCbhYYLUf8mIDIYaZvg6KTGTTbeyeyOf56Zf35PLFvd81JTcnUA7z9jvBCWY4wg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=matan@mellanox.com; Received: from mellanox.com (37.142.13.130) by DB6PR0502MB3048.eurprd05.prod.outlook.com (10.172.250.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sat, 21 Oct 2017 20:55:00 +0000 From: Matan Azrad To: Gaetan Rivet Cc: dev@dpdk.org Date: Sat, 21 Oct 2017 20:54:46 +0000 Message-Id: <1508619286-7096-2-git-send-email-matan@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1508619286-7096-1-git-send-email-matan@mellanox.com> References: <1508423514-28557-1-git-send-email-matan@mellanox.com> <1508619286-7096-1-git-send-email-matan@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0502CA0021.eurprd05.prod.outlook.com (10.175.37.159) To DB6PR0502MB3048.eurprd05.prod.outlook.com (10.172.250.136) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 470c9cfb-53a7-4232-c880-08d518c5ff61 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199); SRVR:DB6PR0502MB3048; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 3:JqT3ESQkTfBvk/p91sgNSjf5PO6bp55LRO4r2ONDHmjCvJgo3VPgjnbEwZBoleLdwn3RCCfeVGqks5/X32p0U9yhRMTlbTVRaPQvla+NdyAbUjYzByDEtrqQZqPYtPNbxOuiDf5FLnoDWiH/MWkBKjAw0/idKsEPuku1qVeGj9zBZNbMbc7odLInu0J141JVvRK9vY8IE+TpDFBsP9NriVYADm2afhdfI4Y7XKk3xFY5arRg+pLJ88B7mGcp+6B2; 25:QIA0qCmB154V937CdxHUE/tm0r4kqbzRNYehmesVFbYSRn75kMQV+Po1PgJbuNXTrt6Ur6lW5ejX7fei4Ebf87m4t64scfpQ0E3VpgsioiklZQ0VWEcKRSHz6aYd6rPBoE6JGqMAL7N1BsICbecom3XBheC87bWeCWFYZBV/6qGhquYJ1uyd7ZOmzFoeDVRBMy/5xYO7WlL5YmqysXX1LSJuT6bO3hIw7U3Zg6+PxJF6IO8YzNeFFumO0OeUMplHr2jb5jrBtOI/mz9VyhvWFroGk7lGhoWozzEXuHPwxC7ozgxKHYgNLzNwhu9h/4wrwgoQ7JhksSB7e0f0W9HTUA==; 31:yEhd2AaVCvrOwn4y0GvzIygvuxBeNBY2M1ovqqHSj4snk06NkMaMJd9yeRmV3JR6bE7PotOQtg92Q8/EfNpWV3Tso1t/xEQRIQK+ZzvAwH1mOxkAmomlzi0+J1GWw/r+m3RTRlsHmfqRI1S3F54K+4xCVU2ZcmZShIVOxwl1M9wPXnQJ6U38ip92XB0mkqLlBsEuQ9uH3toZDBRQbtMCYBvPWAWyE5c2EZpIf7ouuBk= X-MS-TrafficTypeDiagnostic: DB6PR0502MB3048: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 20:4DGzXHCPqbYGZ0hzPNfjSQ//h5IjKyLpAIGDvE47LYPiYwB056X9eAqmvTqHstA7VgFnJPYYN/KhPH/vemGeccULcdzLhoXmWYRak5MBphUQSyvVDEmPp63AJsIlhERKXgcl5Q3pW8nclTpJNByo10ExBu5b9vi+AJ6HbPe3ogT36oDEyClB2LCyo9Iolv/5YZydaRY6MPc5M7mc0/PZpe0qzJSrMncidfCX8GBzStytb+PjwlZXnWVXBCDt3gf6c3FRusxfVV6NSZBd7mXCMv3ksZczgaO1w77QgfRqfydc1jI52n0WdqW+RQ5P2Jf3zSCh6ZVyrHhzKtPs05+EN3mEwGpO5UoQ6aqSPxIHWdq7FIGbJZzS8WOpjkuuGHYQgnKO8TuZLL6j11yQ6svcbXGs4l1LwY2+hokTc0AURUuc42VCXm97W9wmytTwmjNn4ZIBX4l1qqYTt4+8btV8sju42yHioOnK1maNOzforH2amqcsuEbQPMHXg2ZUBh4c; 4:6RsOmHfM/t6SR9S0kVHkr75hE2ykSScI7wkdaL3w5kCg+xCHkVZEDhq/qHcgRaopHsW6puwx3LnlO6eZ2ZI70MCBY4CHO/SRhKlRtMFmUdztC7gyhENryqTbcJoHbbeg8q8Cl4eJ2V2xcCgONdZraNNoevbcocmqOxVifRdN5L7Uid5Rh8cabjbEIgSqIdyAUSd97BVpuMF/igSla2/1DPbgnWeWMdSGDHo118wVUzhdoGL9oTK8NwNaWxQwC5Ra 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)(10201501046)(3231020)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0502MB3048; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0502MB3048; X-Forefront-PRVS: 046753C63C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(199003)(189002)(4326008)(21086003)(7736002)(305945005)(68736007)(105586002)(478600001)(97736004)(33646002)(69596002)(55016002)(50986999)(36756003)(6116002)(3846002)(76176999)(81156014)(81166006)(8676002)(33026002)(5003940100001)(53936002)(101416001)(2906002)(8936002)(106356001)(25786009)(47776003)(50466002)(6916009)(2950100002)(16526018)(50226002)(48376002)(16586007)(6666003)(189998001)(5660300001)(316002)(66066001)(4720700003)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0502MB3048; 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; DB6PR0502MB3048; 23:/eQE8CgTKnGZdEtHjEj7Judu2u4Y52aP0kZcs65?= ZPmmkk/nF0jPm/nPMs+3qYtX/vWZ+4ADodWWktn1VFSt4jJt/nM9DGoHCF1FnHXZNxpkIdRjFl8t29MGc84DX0hXp6moG1k70UXYCgYnIrLDT9//8+lT16X94diOIw2U80IhAjcXLyhAd1RcU4Rw6CATXU+Rgpxp9o4tUY9TthTdb+T5kmuQjSQA2bQZcttOc54eYdOe4gAjwTbU735f0aQCqSRaSn0UFPJ+FU1+vRn+HchyLBQ+BYxJQo3wdbO5vb5F27iIqVzMf4R2D92sjBp6fdgkXdpFNuZ6AGMMg8RVUG2o3RC5y1Hf4K69Wy8RCwkJSY+3Dt/M4Imf4p3kLQP513aMAHqIZI1ELfwSmn8zneDOExFX6S/7DKubfmUcl3Yjtb4cSAJkFoNc9NFJexFnDfjL+LO9P8TYdQl5XlAesl+iOL7kkE3dqglk0TjsCZdZ6r51YnKMZcGk8I60WN/TLfbdN9HBQgsrDF/KqYjH3aOp6f1rMiMsFUurljzMDPqRRQ59pds6Nwe53BbFqm7yU2cZWNxDFSRsYHHO7bCUYTFz7pFszTqxck6BI7IrzJhk6IH5O9DpthdZkiJg7Ovsr9gXMtYBb75jyiO+UaraJT/3189my5krMfIhkVJJvy97N54sYUjIktM9Kp9/E8SFkA9sI1pPsgg0/Ld2WKSrH2ghVKx79L6UaHtgqoepAQs47MjuXCDZkqEKH1MsxFIZgLCKCjb11DpBsAF2/jbKSgX7JFM+l2G0h6M4ni5dJScI2UxPHEg4fJWpp+koCG6Y/JUYIUcOLWF7oQx0MbyI1/NdicKniwEPBt97dBtA0upCREMQirGuAGAKX9LPHbQY4Iwp7TBNKLVH5lwwJuUYDI2DESXqHYWkED+iow5sPPdBgyBP8KInX75pVT2vX7GZc4GLSIZbwWLDUnzkGWFWdDj645PDEEPUjedpPcSAw8fqNo9JJXkVoEa5XKoaU8aGfTv6ImcaDzjp4MkamkRAL5cKTbMT2CzepFTBLQK7NSJJjzM87PPhtx+8DLhNTxSHItXvQ2iJqgNb2b8PJD4hJXrxIBmN8VklbMHIHCkWYI9Uus73ibkeEqJsAN5Hjm50c X-Microsoft-Exchange-Diagnostics: 1; DB6PR0502MB3048; 6:t4CkRpdyTpLSTDtRVdl+hKWU7xFiar/NRMJbNC5d4QYe+UsqHmM0lem30XTLr0qnCa8OYWlgpFWfiEDfL5XrmefP5z2AUSPU7Mjpracsj9Pt8zyZ/WEysWbNwFAVd+OOTJC2G9VAkkNVOBaeZvjRUoygYO8IMK4Ppe+bdgnI5KD3pnD0hv2qXzNd3K1sYfVhFEcSHdoaXvTC6KMCcLh7Je46h3XsVJI6Sicv8S9yDJIZnO5AnMsj5Dz4DMZPW6d0uQTUFmESkXDTNgRbN69NdJglOI/52qs6thWbNWWbQenFCW6E2WhG1MdqLsvuXa1OS3s15f6ar82uJceDq/MHPQ==; 5:0DaUJq5PAXHwFxtzF496AtMXdB/9Kvw8CzB95j1rBHKkqHwda1adtMHpX1tl4PzgryZlZ0+NgejJLLs9FesVuf6WbmkZpvIk9U/f7tWJu3j8RlwGeFN8p2uwYJPGw8IxXSI7EqyUmSRpS1rVLoyLZQ==; 24:QUjaOIUFWS/JKQo7dHUBfYPZN2jW4qo/cDI1Fl0HDbNSYXDiX8rCiVnj870CdVmUZQT52J4xXcHOATNkGU1i7Jkvt4+g6ImzXAp5Ss1Nfaw=; 7:grftG3Vdq3qyKE331J+xL/e7YIVRhERCHiiCj90rsKOBvyvWZzO+hxAfByoBYG1MhsrGbdgEZXpfspunDIBWXyyPAaAgZ5yFdbii4IfQ7GLXZfqYB093PK8sIRSOAbNnzrtPivmZksnRloq7/8n9KiYk+SQVb8gQp7U8h02RI5mM2+eXAwp51nSTOUuNco6OfYWslZ71LTu6vU0uzqNqps02QEGO4TPdCIxZv7qCqL0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2017 20:55:00.9859 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0502MB3048 Subject: [dpdk-dev] [PATCH v3 2/2] net/failsafe: add timestamp to stats snapshot 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" Fail-safe attempts to read an ultimate statistics on removal time; if that fails, it uses the latest recorded snapshot. This patch adds timestamp for each stats snapshot to allow a time report since the last snapshot in case of the above failure. By this way, the user can estimate the stats read accuracy. Signed-off-by: Matan Azrad Acked-by: Gaetan Rivet --- drivers/net/failsafe/failsafe_ether.c | 17 ++++++++++++----- drivers/net/failsafe/failsafe_ops.c | 10 ++++++++-- drivers/net/failsafe/failsafe_private.h | 7 ++++++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index 0282891..6cb435f 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" @@ -317,12 +318,18 @@ /* Attempt to read current stats. */ err = rte_eth_stats_get(PORT_ID(sdev), &stats); - if (err) - WARN("Could not access latest statistics from sub-device %d," - " using latest snapshot.\n", SUB_ID(sdev)); + if (err) { + uint64_t timestamp = sdev->stats_snapshot.timestamp; + + WARN("Could not access latest statistics from sub-device %d.\n", + SUB_ID(sdev)); + if (timestamp != 0) + WARN("Using latest snapshot taken before %lu seconds.\n", + (rte_rdtsc() - timestamp) / rte_get_tsc_hz()); + } failsafe_stats_increment(&PRIV(sdev->fs_dev)->stats_accumulator, - err ? &sdev->stats_snapshot : &stats); - 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..f460551 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 *timestamp = &sdev->stats_snapshot.timestamp; + + 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); + *timestamp = 0; return ret; } - failsafe_stats_increment(stats, &sdev->stats_snapshot); + *timestamp = 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..d81cc3c 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 timestamp; +}; + 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 */