From patchwork Fri May 27 17:56:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 627318 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rGYcj5Xy3z9t3r for ; Sat, 28 May 2016 03:57:09 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=s1YfjunR; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932901AbcE0R5H (ORCPT ); Fri, 27 May 2016 13:57:07 -0400 Received: from mail-yw0-f193.google.com ([209.85.161.193]:32931 "EHLO mail-yw0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932516AbcE0R5F (ORCPT ); Fri, 27 May 2016 13:57:05 -0400 Received: by mail-yw0-f193.google.com with SMTP id y6so7238188ywe.0 for ; Fri, 27 May 2016 10:57:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=z/Ag2ti1+T5dRifpNDg8XjmenVF3/RRkpi3orX/uzy0=; b=s1YfjunRQW166PcHNBatLocU/rwUwOjVmyiHhQRO9rKN14gHvXe6JH5wncfoJxjrt2 5gpiT+7wH0jitAQ7AeRia4W2zfmx4FIDF0V8iE445xnNmtA6kpFFBkUJR2E2ZwwQ1wOn 6vy2Iuh1WGaUWHDuCl1pY+9XXVMEeGatDPTvKBMjzRCMflFrdXZhGgAiKNAlbR3uFmVO Cn/ppO3VKv39oRy7I9IHF1WqGPv08uaGwDHQR12y6jj4d+IJ+HPjTKoWGI/3i65ewlLg ezrO2RoBwf3+8cmqgJEImnVBCJafXMRJvRadYMLTfo8XCaWpMRu2+R6v4b+hWkC078HY 6Vtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=z/Ag2ti1+T5dRifpNDg8XjmenVF3/RRkpi3orX/uzy0=; b=hpNbj6E5p+P4SnTsT3+GdZNeCShA4XRH92fVq4Bu+Y4lMeCl9PVzdIgIG0vKdt3KYc b69EcbmOtzq8uto0MBcJeN47zZ2P+g7u+cQmYsqtZSsRHCjzLB3yyNj3Ols9TsRwTQZa pC73gHm8jmZpA6RygfTnD7kt0NUjWutDcKwTtYaB0hkvhH5CLRIzmbVTsVYfMjNwhW1B 3BeE6Exowt+kYDMEWOdSVQ6L91OBtyvxAOTmK6FDXP/uMeo7Al1qoEXaUsjwHASRyuVl zg6fJRTc6Qnr57hveJAQph0wvR9QB/7qhYqSqPNXhK/Yf8uOw6X56NzVliWCDPbiG/Yx e5Iw== X-Gm-Message-State: ALyK8tKV8p9CuNyO+Xe7PSEuCqR13wVygRdycJrmtehLcaJlKyjz99e6aR9s1KQJBgJDi06WT0k3bD4Sb4u91g== X-Received: by 10.129.27.9 with SMTP id b9mr9351927ywb.173.1464371823942; Fri, 27 May 2016 10:57:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.129.111.137 with HTTP; Fri, 27 May 2016 10:56:44 -0700 (PDT) In-Reply-To: <20160526234433.GU8402@wantstofly.org> References: <20160526234433.GU8402@wantstofly.org> From: Cong Wang Date: Fri, 27 May 2016 10:56:44 -0700 Message-ID: Subject: Re: [PATCH, RFC] macvlan: Handle broadcasts inline if we have only a few macvlans. To: Lennert Buytenhek Cc: Patrick McHardy , Herbert Xu , Linux Kernel Network Developers Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Thu, May 26, 2016 at 4:44 PM, Lennert Buytenhek wrote: > Commit 412ca1550cbecb2c ("macvlan: Move broadcasts into a work queue") > moved processing of all macvlan multicasts into a work queue. This > causes a noticable performance regression when there is heavy multicast > traffic on the underlying interface for multicast groups that the > macvlan subinterfaces are not members of, in which case we end up > cloning all those packets and then freeing them again from a work queue > without really doing any useful work with them in between. But we only queue up to 1000 packets in our backlog. How about adding a quick check before cloning it? goto err; diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index cb01023..1c73d0f 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -315,6 +315,9 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port, struct sk_buff *nskb; int err = -ENOMEM; + if (skb_queue_len(&port->bc_queue) >= MACVLAN_BC_QUEUE_LEN) + return; + nskb = skb_clone(skb, GFP_ATOMIC); if (!nskb)