From: kan.liang@intel.com
To: davem@davemloft.net, linux-kernel@vger.kernel.org,
intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org
Cc: jeffrey.t.kirsher@intel.com, mingo@redhat.com,
peterz@infradead.org, kuznet@ms2.inr.ac.ru, jmorris@namei.org,
yoshfuji@linux-ipv6.org, kaber@trash.net,
akpm@linux-foundation.org, keescook@chromium.org,
viro@zeniv.linux.org.uk, gorcunov@openvz.org,
john.stultz@linaro.org, aduyck@mirantis.com, ben@decadent.org.uk,
decot@googlers.com, jesse.brandeburg@intel.com,
andi@firstfloor.org, Kan Liang <kan.liang@intel.com>
Subject: [RFC PATCH 13/30] i40e/netpolicy: add three new net policies
Date: Sun, 17 Jul 2016 23:56:07 -0700 [thread overview]
Message-ID: <1468824984-65318-14-git-send-email-kan.liang@intel.com> (raw)
In-Reply-To: <1468824984-65318-1-git-send-email-kan.liang@intel.com>
From: Kan Liang <kan.liang@intel.com>
Introduce three net policies for i40e driver.
CPU policy: configure for higher throughput and lower CPU%.
BULK policy: configure for highest throughput.
LATENCY policy: configure for lowest latency.
Lots of tests are done for net policy on platforms with Intel Xeon E5 V2
and XL710 40G NIC. The baseline test is with Linux 4.6.0 kernel.
Netperf is used to evaluate the throughput and latency performance for
these three net policies.
For "BULK" policy, the throughput performance is on average ~1.26X than
baseline.
For "CPU" policy, the throughput performance is on average ~1.20X than
baseline, and has lower CPU% (on average ~5% lower than "BULK" policy).
For "LATENCY" policy, the latency is on average 53.5% less than the
baseline.
Signed-off-by: Kan Liang <kan.liang@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++++++++++
include/linux/netpolicy.h | 3 +++
net/core/netpolicy.c | 5 ++++-
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 3336373..11b921b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -8961,12 +8961,22 @@ static netdev_features_t i40e_features_check(struct sk_buff *skb,
}
#ifdef CONFIG_NETPOLICY
+/* Interrupt moderation in microseconds */
+#define NET_POLICY_CPU_RX 125
+#define NET_POLICY_CPU_TX 250
+#define NET_POLICY_BULK_RX 50
+#define NET_POLICY_BULK_TX 125
+#define NET_POLICY_LATENCY_RX 5
+#define NET_POLICY_LATENCY_TX 10
#define NET_POLICY_NOT_SUPPORT -2
#define NET_POLICY_END -3
static int policy_param[NET_POLICY_MAX + 1][2] = {
/* rx-usec, tx-usec */
{0, 0},
+ {NET_POLICY_CPU_RX, NET_POLICY_CPU_TX}, /* CPU policy */
+ {NET_POLICY_BULK_RX, NET_POLICY_BULK_TX}, /* BULK policy */
+ {NET_POLICY_LATENCY_RX, NET_POLICY_LATENCY_TX}, /* LATENCY policy */
{NET_POLICY_END, NET_POLICY_END},
};
diff --git a/include/linux/netpolicy.h b/include/linux/netpolicy.h
index b1d9277..3d348a7 100644
--- a/include/linux/netpolicy.h
+++ b/include/linux/netpolicy.h
@@ -18,6 +18,9 @@
enum netpolicy_name {
NET_POLICY_NONE = 0,
+ NET_POLICY_CPU,
+ NET_POLICY_BULK,
+ NET_POLICY_LATENCY,
NET_POLICY_MAX,
};
diff --git a/net/core/netpolicy.c b/net/core/netpolicy.c
index 8112839..71e9163 100644
--- a/net/core/netpolicy.c
+++ b/net/core/netpolicy.c
@@ -223,7 +223,10 @@ static int netpolicy_enable(struct net_device *dev)
}
const char *policy_name[NET_POLICY_MAX] = {
- "NONE"
+ "NONE",
+ "CPU",
+ "BULK",
+ "LATENCY"
};
static u32 cpu_to_queue(struct net_device *dev,
--
2.5.5
next prev parent reply other threads:[~2016-07-18 14:23 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-18 6:55 [RFC PATCH 00/30] Kernel NET policy kan.liang
2016-07-18 6:55 ` [RFC PATCH 01/30] net: introduce " kan.liang
2016-07-18 6:55 ` [RFC PATCH 02/30] net/netpolicy: init " kan.liang
2016-07-18 6:55 ` [RFC PATCH 03/30] i40e/netpolicy: Implement ndo_netpolicy_init kan.liang
2016-07-18 6:55 ` [RFC PATCH 04/30] net/netpolicy: get driver information kan.liang
2016-07-18 6:55 ` [RFC PATCH 05/30] i40e/netpolicy: implement ndo_get_irq_info kan.liang
2016-07-18 6:56 ` [RFC PATCH 06/30] net/netpolicy: get CPU information kan.liang
2016-07-18 6:56 ` [RFC PATCH 07/30] net/netpolicy: create CPU and queue mapping kan.liang
2016-07-18 6:56 ` [RFC PATCH 08/30] net/netpolicy: set and remove irq affinity kan.liang
2016-07-18 6:56 ` [RFC PATCH 09/30] net/netpolicy: enable and disable net policy kan.liang
2016-07-18 6:56 ` [RFC PATCH 10/30] net/netpolicy: introduce netpolicy object kan.liang
2016-07-18 6:56 ` [RFC PATCH 11/30] net/netpolicy: set net policy by policy name kan.liang
2016-07-18 6:56 ` [RFC PATCH 12/30] i40e/netpolicy: implement ndo_set_net_policy kan.liang
2016-07-18 6:56 ` kan.liang [this message]
2016-07-18 6:56 ` [RFC PATCH 14/30] net/netpolicy: add MIX policy kan.liang
2016-07-18 6:56 ` [RFC PATCH 15/30] i40e/netpolicy: add MIX policy support kan.liang
2016-07-18 6:56 ` [RFC PATCH 16/30] net/netpolicy: net device hotplug kan.liang
2016-07-18 6:56 ` [RFC PATCH 17/30] net/netpolicy: support CPU hotplug kan.liang
2016-07-18 6:56 ` [RFC PATCH 18/30] net/netpolicy: handle channel changes kan.liang
2016-07-18 6:56 ` [RFC PATCH 19/30] net/netpolicy: implement netpolicy register kan.liang
2016-07-18 6:56 ` [RFC PATCH 20/30] net/netpolicy: introduce per socket netpolicy kan.liang
2016-07-18 6:56 ` [RFC PATCH 21/30] net/policy: introduce netpolicy_pick_queue kan.liang
2016-07-18 6:56 ` [RFC PATCH 22/30] net/netpolicy: set tx queues according to policy kan.liang
2016-07-18 6:56 ` [RFC PATCH 23/30] i40e/ethtool: support RX_CLS_LOC_ANY kan.liang
2016-07-18 16:21 ` Alexander Duyck
2016-07-18 6:56 ` [RFC PATCH 24/30] net/netpolicy: set rx queues according to policy kan.liang
2016-07-18 6:56 ` [RFC PATCH 25/30] net/netpolicy: introduce per task net policy kan.liang
2016-07-18 6:56 ` [RFC PATCH 26/30] net/netpolicy: set per task policy by proc kan.liang
2016-07-18 6:56 ` [RFC PATCH 27/30] net/netpolicy: fast path for finding the queues kan.liang
2016-07-18 6:56 ` [RFC PATCH 28/30] net/netpolicy: optimize for queue pair kan.liang
2016-07-18 6:56 ` [RFC PATCH 29/30] net/netpolicy: limit the total record number kan.liang
2016-07-18 6:56 ` [RFC PATCH 30/30] Documentation/networking: Document net policy kan.liang
2016-07-18 16:58 ` Randy Dunlap
2016-07-18 15:18 ` [RFC PATCH 00/30] Kernel NET policy Florian Westphal
2016-07-18 15:45 ` Andi Kleen
2016-07-18 17:52 ` Cong Wang
2016-07-18 20:14 ` Liang, Kan
2016-07-18 20:19 ` Cong Wang
2016-07-18 20:24 ` Liang, Kan
2016-07-18 19:04 ` Hannes Frederic Sowa
2016-07-18 19:43 ` Andi Kleen
2016-07-18 21:51 ` Hannes Frederic Sowa
2016-07-19 1:49 ` Liang, Kan
2016-07-19 5:03 ` David Miller
2016-07-19 13:43 ` Liang, Kan
2016-07-18 15:51 ` Liang, Kan
2016-07-18 16:17 ` Florian Westphal
2016-07-18 17:40 ` Liang, Kan
2016-07-18 16:34 ` Tom Herbert
2016-07-18 17:58 ` Liang, Kan
2016-07-18 16:22 ` Daniel Borkmann
2016-07-18 18:30 ` Liang, Kan
2016-07-18 20:51 ` Daniel Borkmann
2016-07-18 17:00 ` Alexander Duyck
2016-07-18 19:45 ` Liang, Kan
2016-07-18 19:49 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1468824984-65318-14-git-send-email-kan.liang@intel.com \
--to=kan.liang@intel.com \
--cc=aduyck@mirantis.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=ben@decadent.org.uk \
--cc=davem@davemloft.net \
--cc=decot@googlers.com \
--cc=gorcunov@openvz.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=jmorris@namei.org \
--cc=john.stultz@linaro.org \
--cc=kaber@trash.net \
--cc=keescook@chromium.org \
--cc=kuznet@ms2.inr.ac.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=viro@zeniv.linux.org.uk \
--cc=yoshfuji@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®