Re: [PATCH net-next v2 9/9] ibmvnic: Do not replenish RX buffers after every polling loop

2020-11-19 Thread Thomas Falcon

On 11/19/20 2:38 PM, ljp wrote:

On 2020-11-19 14:26, Thomas Falcon wrote:

On 11/19/20 3:43 AM, ljp wrote:


On 2020-11-18 19:12, Thomas Falcon wrote:


From: "Dwip N. Banerjee" 

Reduce the amount of time spent replenishing RX buffers by
only doing so once available buffers has fallen under a certain
threshold, in this case half of the total number of buffers, or
if the polling loop exits before the packets processed is less
than its budget.

Signed-off-by: Dwip N. Banerjee 
---
drivers/net/ethernet/ibm/ibmvnic.c | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c
b/drivers/net/ethernet/ibm/ibmvnic.c
index 96df6d8fa277..9fe43ab0496d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2537,7 +2537,10 @@ static int ibmvnic_poll(struct napi_struct

*napi, int budget)
frames_processed++;
}

- if (adapter->state != VNIC_CLOSING)
+ if (adapter->state != VNIC_CLOSING &&
+ ((atomic_read(>rx_pool[scrq_num].available) <
+ adapter->req_rx_add_entries_per_subcrq / 2) ||
+ frames_processed < budget))


1/2 seems a simple and good algorithm.
Explaining why "frames_process < budget" is necessary in the commit
message
or source code also helps.


Hello, Lijun. The patch author, Dwip Banerjee, suggested the modified
commit message below:

Reduce the amount of time spent replenishing RX buffers by
 only doing so once available buffers has fallen under a certain
 threshold, in this case half of the total number of buffers, or
 if the polling loop exits before the packets processed is less
 than its budget. Non-exhaustion of NAPI budget implies lower
 incoming packet pressure, allowing the leeway to refill the buffers
 in preparation for any impending burst.


It looks good to me.



Would such an update require a v3?


I assume you ask Jakub, right?


Yes. There was an issue with my mail client in my earlier response, so I 
am posting Dwip's modified commit message again below.


Reduce the amount of time spent replenishing RX buffers by only doing so 
once available buffers has fallen under a certain threshold, in this 
case half of the total number of buffers, or if the polling loop exits 
before the packets processed is less than its budget. Non-exhaustion of 
NAPI budget implies lower incoming packet pressure, allowing the leeway 
to refill the buffers in preparation for any impending burst.



replenish_rx_pool(adapter, >rx_pool[scrq_num]);
if (frames_processed < budget) {
if (napi_complete_done(napi, frames_processed)) {


Re: [PATCH net-next v2 9/9] ibmvnic: Do not replenish RX buffers after every polling loop

2020-11-19 Thread Thomas Falcon

On 11/19/20 3:43 AM, ljp wrote:

On 2020-11-18 19:12, Thomas Falcon wrote:

From: "Dwip N. Banerjee" 

Reduce the amount of time spent replenishing RX buffers by
only doing so once available buffers has fallen under a certain
threshold, in this case half of the total number of buffers, or
if the polling loop exits before the packets processed is less
than its budget.

Signed-off-by: Dwip N. Banerjee 
---
 drivers/net/ethernet/ibm/ibmvnic.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c
b/drivers/net/ethernet/ibm/ibmvnic.c
index 96df6d8fa277..9fe43ab0496d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2537,7 +2537,10 @@ static int ibmvnic_poll(struct napi_struct
*napi, int budget)
 frames_processed++;
 }

-    if (adapter->state != VNIC_CLOSING)
+    if (adapter->state != VNIC_CLOSING &&
+ ((atomic_read(>rx_pool[scrq_num].available) <
+  adapter->req_rx_add_entries_per_subcrq / 2) ||
+  frames_processed < budget))


1/2 seems a simple and good algorithm.
Explaining why "frames_process < budget" is necessary in the commit 
message

or source code also helps.

Hello, Lijun. The patch author, Dwip Banerjee, suggested the modified 
commit message below:


Reduce the amount of time spent replenishing RX buffers by
only doing so once available buffers has fallen under a certain
threshold, in this case half of the total number of buffers, or
if the polling loop exits before the packets processed is less
than its budget. Non-exhaustion of NAPI budget implies lower
incoming packet pressure, allowing the leeway to refill the buffers
in preparation for any impending burst.

Would such an update require a v3?




 replenish_rx_pool(adapter, >rx_pool[scrq_num]);
 if (frames_processed < budget) {
 if (napi_complete_done(napi, frames_processed)) {


Re: [PATCH net-next v2 9/9] ibmvnic: Do not replenish RX buffers after every polling loop

2020-11-19 Thread ljp

On 2020-11-19 14:26, Thomas Falcon wrote:

On 11/19/20 3:43 AM, ljp wrote:


On 2020-11-18 19:12, Thomas Falcon wrote:


From: "Dwip N. Banerjee" 

Reduce the amount of time spent replenishing RX buffers by
only doing so once available buffers has fallen under a certain
threshold, in this case half of the total number of buffers, or
if the polling loop exits before the packets processed is less
than its budget.

Signed-off-by: Dwip N. Banerjee 
---
drivers/net/ethernet/ibm/ibmvnic.c | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c
b/drivers/net/ethernet/ibm/ibmvnic.c
index 96df6d8fa277..9fe43ab0496d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2537,7 +2537,10 @@ static int ibmvnic_poll(struct napi_struct

*napi, int budget)
frames_processed++;
}

- if (adapter->state != VNIC_CLOSING)
+ if (adapter->state != VNIC_CLOSING &&
+ ((atomic_read(>rx_pool[scrq_num].available) <
+ adapter->req_rx_add_entries_per_subcrq / 2) ||
+ frames_processed < budget))


1/2 seems a simple and good algorithm.
Explaining why "frames_process < budget" is necessary in the commit
message
or source code also helps.


Hello, Lijun. The patch author, Dwip Banerjee, suggested the modified
commit message below:

Reduce the amount of time spent replenishing RX buffers by
 only doing so once available buffers has fallen under a certain
 threshold, in this case half of the total number of buffers, or
 if the polling loop exits before the packets processed is less
 than its budget. Non-exhaustion of NAPI budget implies lower
 incoming packet pressure, allowing the leeway to refill the buffers
 in preparation for any impending burst.


It looks good to me.



Would such an update require a v3?


I assume you ask Jakub, right?



replenish_rx_pool(adapter, >rx_pool[scrq_num]);
if (frames_processed < budget) {
if (napi_complete_done(napi, frames_processed)) {


Re: [PATCH net-next v2 9/9] ibmvnic: Do not replenish RX buffers after every polling loop

2020-11-19 Thread ljp

On 2020-11-18 19:12, Thomas Falcon wrote:

From: "Dwip N. Banerjee" 

Reduce the amount of time spent replenishing RX buffers by
only doing so once available buffers has fallen under a certain
threshold, in this case half of the total number of buffers, or
if the polling loop exits before the packets processed is less
than its budget.

Signed-off-by: Dwip N. Banerjee 
---
 drivers/net/ethernet/ibm/ibmvnic.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/ibm/ibmvnic.c
b/drivers/net/ethernet/ibm/ibmvnic.c
index 96df6d8fa277..9fe43ab0496d 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -2537,7 +2537,10 @@ static int ibmvnic_poll(struct napi_struct
*napi, int budget)
frames_processed++;
}

-   if (adapter->state != VNIC_CLOSING)
+   if (adapter->state != VNIC_CLOSING &&
+   ((atomic_read(>rx_pool[scrq_num].available) <
+ adapter->req_rx_add_entries_per_subcrq / 2) ||
+ frames_processed < budget))


1/2 seems a simple and good algorithm.
Explaining why "frames_process < budget" is necessary in the commit 
message

or source code also helps.



replenish_rx_pool(adapter, >rx_pool[scrq_num]);
if (frames_processed < budget) {
if (napi_complete_done(napi, frames_processed)) {