From patchwork Tue Apr 9 17:59:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 1082590 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gj+RGlxj"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44dw6j6cKlz9sP8 for ; Wed, 10 Apr 2019 03:59:57 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 8ECF4E58; Tue, 9 Apr 2019 17:59:55 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 24CA3E26 for ; Tue, 9 Apr 2019 17:59:54 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 9BE0E851 for ; Tue, 9 Apr 2019 17:59:53 +0000 (UTC) Received: by mail-pg1-f195.google.com with SMTP id g8so9751282pgf.2 for ; Tue, 09 Apr 2019 10:59:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=1EdC4+lOnMwBUMCvF8OFxqnbD59w7214GBNx5e7MHJQ=; b=gj+RGlxjVLOGxrRXTpKYYLnapT7gK5W9ieujRULCxEqqZMlZv47ylbYZchRnifpqwm mW/VpUZamCNMc1eD/ZBB5dgcNoW+x57MsvZIm8zXG8RoQxdahLXsggknaqIJpp/vvAs5 +MEEknHlZDfii6AdEYrSxcpvcHoEkLhw//eOT+MPNBNiUJGTL6+TmDiCXRXsb8I+bA+V py3U6WO1KtuBOrMpd7SExVXqEW56WoaIyZsqyinqLR3OhEO/F+44UCaAXUQzZ4O9LEnJ 0OcAN+rgVv2cMYXkWn1DVWW0uyA2qLqc+6EMORH8QyYzLBZW7FQl/l4DNXtrvUPG88xG 8Y2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=1EdC4+lOnMwBUMCvF8OFxqnbD59w7214GBNx5e7MHJQ=; b=a4uAmGiYDVrJEqh3yLcbrwJphrZtBebGp8wl8ouWpTnpKiZsrruM/3r6GiHC3jwEBI e37ieZvBQUg5V0g58YXBjqK90SkvdZhAUP7LMs/T+JMXOmZi8Q0iAgNs/1pVrW0y33QG hvxe7/2s8opEKAXUbbsPIe/W1uxScX2lcqqfQ/I4KMNxaA2kFeBalTipWaFH909N+JRC LmosVqzUvpSTrGlUKkT91lZsU+wmpDaGhYOE12uOisQooo7jQc1JF5u34IxAJihYhUXD srWenTJ7wPTq8Xg4qPr6ZCwQiXUxir0liseU/5G3o8VFeWF9sKDtcrM/RupzFKMm6IJY HduA== X-Gm-Message-State: APjAAAU7loxE3gbf9oyzTUxrCgJT4ATrIeA2sdm0JL54pN2xUxsUt1a8 VouTDzJeaDnx25M/7zfhNAUIkmfa X-Google-Smtp-Source: APXvYqww45oGAQ083tPbXjqVZBIAGkFPZJOSJwSAnFNjmQ/EEF0x4cmNlLGjeqpNhLFAABrGcQFNLA== X-Received: by 2002:a62:1b8a:: with SMTP id b132mr38535274pfb.19.1554832792726; Tue, 09 Apr 2019 10:59:52 -0700 (PDT) Received: from sc9-mailhost2.vmware.com ([66.170.99.2]) by smtp.gmail.com with ESMTPSA id 18sm44315710pfp.18.2019.04.09.10.59.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Apr 2019 10:59:52 -0700 (PDT) From: William Tu To: dev@openvswitch.org Date: Tue, 9 Apr 2019 10:59:05 -0700 Message-Id: <1554832745-26792-1-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ilya Maximets Subject: [ovs-dev] [PATCH] dpif-netdev: fix meter granulariy. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org When testing packet rate around 1Mpps with meter enabled, the frequency of hitting meter action becomes much higher, around 30us each time. As a result, the meter's calculation of 'uint32_t delta_t' becomes always 0 and meter action has no effect. This is due to the previous commit 05f9e707e194 divides the delta by 1000, in order to convert to msec granularity. The patch fixes it by using double to hold the delta value. Fixes: 05f9e707e194 ("dpif-netdev: Use microsecond granularity.") Cc: Ilya Maximets Cc: Yi-Hung Wei Signed-off-by: William Tu --- lib/dpif-netdev.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 4d6d0c372236..61d0e9f2bf69 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -5525,8 +5525,8 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, struct dp_meter *meter; struct dp_meter_band *band; struct dp_packet *packet; - long long int long_delta_t; /* msec */ - uint32_t delta_t; /* msec */ + double double_delta_t; /* msec */ + double delta_t; /* msec */ const size_t cnt = dp_packet_batch_size(packets_); uint32_t bytes, volume; int exceeded_band[NETDEV_MAX_BURST]; @@ -5549,12 +5549,12 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, memset(exceeded_rate, 0, cnt * sizeof *exceeded_rate); /* All packets will hit the meter at the same time. */ - long_delta_t = (now - meter->used) / 1000; /* msec */ + double_delta_t = (double)(now - meter->used) / 1000.0; /* msec */ /* Make sure delta_t will not be too large, so that bucket will not * wrap around below. */ - delta_t = (long_delta_t > (long long int)meter->max_delta_t) - ? meter->max_delta_t : (uint32_t)long_delta_t; + delta_t = (double_delta_t > (long long int)meter->max_delta_t) + ? (double)meter->max_delta_t : double_delta_t; /* Update meter stats. */ meter->used = now;