From patchwork Fri Jul 27 02:45:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Taht X-Patchwork-Id: 949969 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HSVu0yG6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41cCxf5Q7yz9s1x for ; Fri, 27 Jul 2018 12:45:26 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725870AbeG0EFD (ORCPT ); Fri, 27 Jul 2018 00:05:03 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:40276 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725803AbeG0EFC (ORCPT ); Fri, 27 Jul 2018 00:05:02 -0400 Received: by mail-pg1-f194.google.com with SMTP id x5-v6so2320970pgp.7 for ; Thu, 26 Jul 2018 19:45:24 -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:in-reply-to:references; bh=qU1iyznZkCBSoA05luc6zD30zC7308T9BdDPTj0BI9w=; b=HSVu0yG6/XV+YjlOmNhb4394G0MRZz/OZ0QAU9BC2M6gZ58/j0nZMCIXlwm6MPSSgf NDIeUtejWCWM/4Cm0Y7W9rYOGcW+czsGEjQvGscD4cBoqMmdqFEvv8LQ3QbM49MeOdig H1gsS5ZgrZby7ODT8kvf9Ks4XuZ7MYE4A1pIjxh0lEQm8+YTSMegUSkMySMluwnCLWoo FQH8i6NTrhOUSFxIfMImWepbtX7GgQa3ZqmW4iPcLnPj0q1bYsf389O34O6c3OFB2GXX e/55kSKezteeIVXB8eyzawOPC8XugK1XfiCP09+we91PVijMp2pWnb2YhV9JnAS7u1iv t2ug== 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:in-reply-to :references; bh=qU1iyznZkCBSoA05luc6zD30zC7308T9BdDPTj0BI9w=; b=LX8NWDND/EKFOS0mVMrZRX03D3RSU8cm7o847giIr/WG2WGLGfDZK+SAkpVkCd60vY OEV0R+J8KlgN7Alr3VQDQHwh3SZFYi5/eH9qiHWfmml5ihsOYpH7/qpLhhHRCbmDrFCd 86VOoNBqjE8f7EJxhB+pXkwqOOjhKdVMw860VRumCKcvkrVVUcOMgviKy9GTVBWTdDK9 ydrFLjr5DQL1hgrijvG4uDkpzdJnoOIit03UiS6arNhZ7892qV+WTMueIqSFULAd0FGx Po1jkGwfatt2YoXxEN/miQOpayVqfcj5ieiv57HS1XFT7/cV2vb1hp+kZJ7uiUKFKZdC eJnQ== X-Gm-Message-State: AOUpUlHi4ZBUuEoht+McqlEp6fEBT7jtWdU9BCePdjx8UceNoyQufc0l Nv6K1azOskgc0Xnj0OvpSGzxXtoh X-Google-Smtp-Source: AAOMgpdsDPqku7NgAzGfWMn8vgOtB+xzvl2ctIhMmt3Dy5GR9r3UMc0g0jOubcCRR52qLKZTPKWcYw== X-Received: by 2002:a63:a5c:: with SMTP id z28-v6mr4215078pgk.209.1532659523979; Thu, 26 Jul 2018 19:45:23 -0700 (PDT) Received: from spaceheater.lab.teklibre.com ([2603:3024:1536:86f0:225:90ff:fec1:6252]) by smtp.gmail.com with ESMTPSA id i62-v6sm4442691pge.66.2018.07.26.19.45.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 26 Jul 2018 19:45:22 -0700 (PDT) From: Dave Taht To: netdev@vger.kernel.org, cake@lists.bufferbloat.net Cc: Dave Taht Subject: [PATCH net-next] sch_cake: Make gso-splitting configurable from userspace Date: Thu, 26 Jul 2018 19:45:10 -0700 Message-Id: <1532659510-17385-2-git-send-email-dave.taht@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1532659510-17385-1-git-send-email-dave.taht@gmail.com> References: <1532659510-17385-1-git-send-email-dave.taht@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch restores cake's deployed behavior at line rate to always split gso, and makes gso splitting configurable from userspace. running cake unlimited (unshaped) at 1gigE, local traffic: no-split-gso bql limit: 131966 split-gso bql limit: ~42392-45420 On this 4 stream test splitting gso apart results in halving the observed interpacket latency at no loss in throughput. Summary of tcp_nup test run 'gso-split' (at 2018-07-26 16:03:51.824728): Ping (ms) ICMP : 0.83 0.81 ms 341 TCP upload avg : 235.43 235.39 Mbits/s 301 TCP upload sum : 941.71 941.56 Mbits/s 301 TCP upload::1 : 235.45 235.43 Mbits/s 271 TCP upload::2 : 235.45 235.41 Mbits/s 289 TCP upload::3 : 235.40 235.40 Mbits/s 288 TCP upload::4 : 235.41 235.40 Mbits/s 291 verses Summary of tcp_nup test run 'no-split-gso' (at 2018-07-26 16:37:23.563960): avg median # data pts Ping (ms) ICMP : 1.67 1.73 ms 348 TCP upload avg : 234.56 235.37 Mbits/s 301 TCP upload sum : 938.24 941.49 Mbits/s 301 TCP upload::1 : 234.55 235.38 Mbits/s 285 TCP upload::2 : 234.57 235.37 Mbits/s 286 TCP upload::3 : 234.58 235.37 Mbits/s 274 TCP upload::4 : 234.54 235.42 Mbits/s 288 --- net/sched/sch_cake.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 539c949..35fc725 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -80,7 +80,6 @@ #define CAKE_QUEUES (1024) #define CAKE_FLOW_MASK 63 #define CAKE_FLOW_NAT_FLAG 64 -#define CAKE_SPLIT_GSO_THRESHOLD (125000000) /* 1Gbps */ /* struct cobalt_params - contains codel and blue parameters * @interval: codel initial drop rate @@ -2569,10 +2568,12 @@ static int cake_change(struct Qdisc *sch, struct nlattr *opt, if (tb[TCA_CAKE_MEMORY]) q->buffer_config_limit = nla_get_u32(tb[TCA_CAKE_MEMORY]); - if (q->rate_bps && q->rate_bps <= CAKE_SPLIT_GSO_THRESHOLD) - q->rate_flags |= CAKE_FLAG_SPLIT_GSO; - else - q->rate_flags &= ~CAKE_FLAG_SPLIT_GSO; + if (tb[TCA_CAKE_SPLIT_GSO]) { + if (!!nla_get_u32(tb[TCA_CAKE_SPLIT_GSO])) + q->rate_flags |= CAKE_FLAG_SPLIT_GSO; + else + q->rate_flags &= ~CAKE_FLAG_SPLIT_GSO; + } if (q->tins) { sch_tree_lock(sch); @@ -2608,7 +2609,7 @@ static int cake_init(struct Qdisc *sch, struct nlattr *opt, q->target = 5000; /* 5ms: codel RFC argues * for 5 to 10% of interval */ - + q->rate_flags |= CAKE_FLAG_SPLIT_GSO; q->cur_tin = 0; q->cur_flow = 0;