An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Signed-off-by: Chi Song <redacted>
---
v7: move to ethtool register dump
v6: update names to be more precise, remove useless assignment
v5: update variable orders
v4: use a separated group to organize tx_indirection better, change
location of attributes init/exit to netvsc_drv_init/exit
drivers/net/hyperv/netvsc_drv.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/net/hyperv/netvsc_drv.c
b/drivers/net/hyperv/netvsc_drv.c
index 6267f706e8ee..3288221726ea 100644
From: Jakub Kicinski <kuba@kernel.org> Date: 2020-07-23 17:08:48
On Wed, 22 Jul 2020 23:59:09 -0700 (PDT) Chi Song wrote:
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Signed-off-by: Chi Song <redacted>
The patch looks good to me, but it has been corrupted by your email
client, could you perhaps try git send-email?
From: Michal Kubecek <hidden> Date: 2020-07-23 19:35:45
On Wed, Jul 22, 2020 at 11:59:09PM -0700, Chi Song wrote:
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Is the Tx indirection table really unique to netvsc or can we expect
other drivers to support similar feature? Also, would it make sense to
allow also setting the table with ethtool? (AFAICS it can be only set
from hypervisor at the moment.)
It kind of feels that the actual reason for using register dump was that
it's there and it was easy to use rather than that the information would
logically belong there. We already have a specific interface for getting
and seting receive indirection table; perhaps it would make sense to
have also one for the transmit indirection table.
Michal
-----Original Message-----
From: Michal Kubecek <redacted>
Sent: Thursday, July 23, 2020 3:36 PM
To: Chi Song <redacted>
Cc: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
[off-list ref]; Stephen Hemminger [off-list ref];
Wei Liu [off-list ref]; David S. Miller [off-list ref]; Jakub
Kicinski [off-list ref]; linux-hyperv@vger.kernel.org;
netdev@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 net-next] net: hyperv: dump TX indirection table to
ethtool regs
On Wed, Jul 22, 2020 at 11:59:09PM -0700, Chi Song wrote:
quoted
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Is the Tx indirection table really unique to netvsc or can we expect
other drivers to support similar feature? Also, would it make sense to
allow also setting the table with ethtool? (AFAICS it can be only set
from hypervisor at the moment.)
Currently, TX indirection table is only used by the Hyper-V synthetic NIC. I'm
not aware of any other NIC planning to use this.
This table is created by host dynamically based on host side CPU usage,
and provided to the VM periodically. Our protocol doesn't let the guest side
to change it.
Thanks,
- Haiyang
From: Michal Kubecek <hidden> Date: 2020-07-23 20:22:55
On Thu, Jul 23, 2020 at 07:55:20PM +0000, Haiyang Zhang wrote:
quoted
-----Original Message-----
From: Michal Kubecek <redacted>
Sent: Thursday, July 23, 2020 3:36 PM
To: Chi Song <redacted>
Cc: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
[off-list ref]; Stephen Hemminger [off-list ref];
Wei Liu [off-list ref]; David S. Miller [off-list ref]; Jakub
Kicinski [off-list ref]; linux-hyperv@vger.kernel.org;
netdev@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 net-next] net: hyperv: dump TX indirection table to
ethtool regs
On Wed, Jul 22, 2020 at 11:59:09PM -0700, Chi Song wrote:
quoted
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Is the Tx indirection table really unique to netvsc or can we expect
other drivers to support similar feature? Also, would it make sense to
allow also setting the table with ethtool? (AFAICS it can be only set
from hypervisor at the moment.)
Currently, TX indirection table is only used by the Hyper-V synthetic NIC. I'm
not aware of any other NIC planning to use this.
This table is created by host dynamically based on host side CPU usage,
and provided to the VM periodically. Our protocol doesn't let the guest side
to change it.
If host is expected to rewrite the table periodically, it would indeed
be of little use to set it on guest side. OK, let's do it as register
dump and see if someone else comes with similar feature.
Michal
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Signed-off-by: Chi Song <redacted>
---
v8: fix corrupt patch file
v7: move to ethtool register dump
v6: update names to be more precise, remove useless assignment
v5: update variable orders
v4: use a separated group to organize tx_indirection better, change
location of attributes init/exit to netvsc_drv_init/exit
drivers/net/hyperv/netvsc_drv.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
@@ -1934,6 +1934,23 @@ static int netvsc_set_features(struct net_device *ndev,returnret;}+staticintnetvsc_get_regs_len(structnet_device*netdev)+{+returnVRSS_SEND_TAB_SIZE*sizeof(u32);+}++staticvoidnetvsc_get_regs(structnet_device*netdev,+structethtool_regs*regs,void*p)+{+structnet_device_context*ndc=netdev_priv(netdev);+u32*regs_buff=p;++/* increase the version, if buffer format is changed. */+regs->version=1;++memcpy(regs_buff,ndc->tx_table,VRSS_SEND_TAB_SIZE*sizeof(u32));+}+staticu32netvsc_get_msglevel(structnet_device*ndev){structnet_device_context*ndev_ctx=netdev_priv(ndev);
-----Original Message-----
From: Chi Song <redacted>
Sent: Friday, July 24, 2020 12:14 AM
To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
[off-list ref]; Stephen Hemminger [off-list ref];
Wei Liu [off-list ref]; David S. Miller [off-list ref]; Jakub
Kicinski [off-list ref]
Cc: linux-hyperv@vger.kernel.org; netdev@vger.kernel.org; linux-
kernel@vger.kernel.org
Subject: [PATCH v8 net-next] net: hyperv: dump TX indirection table to ethtool
regs
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Signed-off-by: Chi Song <redacted>
From: David Miller <davem@davemloft.net> Date: 2020-07-24 22:18:55
From: Chi Song <redacted>
Date: Thu, 23 Jul 2020 21:14:26 -0700
An imbalanced TX indirection table causes netvsc to have low
performance. This table is created and managed during runtime. To help
better diagnose performance issues caused by imbalanced tables, it needs
make TX indirection tables visible.
Because TX indirection table is driver specified information, so
display it via ethtool register dump.
Signed-off-by: Chi Song <redacted>