* [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector
2022-10-07 21:38 [Intel-wired-lan] [next-queue v4 0/4] Add an i40e_napi_poll tracepoint Joe Damato
@ 2022-10-07 21:38 ` Joe Damato
2022-10-14 3:56 ` G, GurucharanX
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI Joe Damato
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Joe Damato @ 2022-10-07 21:38 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Joe Damato, kuba, davem
Make it easy to figure out the IRQ number for a particular i40e_q_vector by
storing the assigned IRQ in the structure itself.
Signed-off-by: Joe Damato <jdamato@fastly.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e.h | 1 +
drivers/net/ethernet/intel/i40e/i40e_main.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 9926c4e..8e1f395 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -992,6 +992,7 @@ struct i40e_q_vector {
struct rcu_head rcu; /* to avoid race with update stats on free */
char name[I40E_INT_NAME_STR_LEN];
bool arm_wb_state;
+ int irq_num; /* IRQ assigned to this q_vector */
} ____cacheline_internodealigned_in_smp;
/* lan device */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 6b7535a..6efe130 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -4123,6 +4123,7 @@ static int i40e_vsi_request_irq_msix(struct i40e_vsi *vsi, char *basename)
}
/* register for affinity change notifications */
+ q_vector->irq_num = irq_num;
q_vector->affinity_notify.notify = i40e_irq_affinity_notify;
q_vector->affinity_notify.release = i40e_irq_affinity_release;
irq_set_affinity_notifier(irq_num, &q_vector->affinity_notify);
--
2.7.4
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector Joe Damato
@ 2022-10-14 3:56 ` G, GurucharanX
0 siblings, 0 replies; 9+ messages in thread
From: G, GurucharanX @ 2022-10-14 3:56 UTC (permalink / raw)
To: Joe Damato, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Joe Damato
> Sent: Saturday, October 8, 2022 3:09 AM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Joe Damato <jdamato@fastly.com>;
> kuba@kernel.org; davem@davemloft.net
> Subject: [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in
> i40e_q_vector
>
> Make it easy to figure out the IRQ number for a particular i40e_q_vector by
> storing the assigned IRQ in the structure itself.
>
> Signed-off-by: Joe Damato <jdamato@fastly.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e.h | 1 +
> drivers/net/ethernet/intel/i40e/i40e_main.c | 1 +
> 2 files changed, 2 insertions(+)
>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI
2022-10-07 21:38 [Intel-wired-lan] [next-queue v4 0/4] Add an i40e_napi_poll tracepoint Joe Damato
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector Joe Damato
@ 2022-10-07 21:38 ` Joe Damato
2022-10-14 3:54 ` G, GurucharanX
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes " Joe Damato
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint Joe Damato
3 siblings, 1 reply; 9+ messages in thread
From: Joe Damato @ 2022-10-07 21:38 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Joe Damato, kuba, davem
Update i40e_clean_tx_irq to take an out parameter (tx_cleaned) which stores
the number TXs cleaned.
No XDP related TX code is touched. Care has been taken to avoid changing
the control flow of i40e_clean_tx_irq and i40e_napi_poll.
Signed-off-by: Joe Damato <jdamato@fastly.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index b97c95f..274de1c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -923,11 +923,13 @@ void i40e_detect_recover_hung(struct i40e_vsi *vsi)
* @vsi: the VSI we care about
* @tx_ring: Tx ring to clean
* @napi_budget: Used to determine if we are in netpoll
+ * @tx_cleaned: Out parameter set to the number of TXes cleaned
*
* Returns true if there's any budget left (e.g. the clean is finished)
**/
static bool i40e_clean_tx_irq(struct i40e_vsi *vsi,
- struct i40e_ring *tx_ring, int napi_budget)
+ struct i40e_ring *tx_ring, int napi_budget,
+ unsigned int *tx_cleaned)
{
int i = tx_ring->next_to_clean;
struct i40e_tx_buffer *tx_buf;
@@ -1048,6 +1050,7 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi,
}
}
+ *tx_cleaned = total_packets;
return !!budget;
}
@@ -2689,10 +2692,12 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
container_of(napi, struct i40e_q_vector, napi);
struct i40e_vsi *vsi = q_vector->vsi;
struct i40e_ring *ring;
+ bool tx_clean_complete = true;
bool clean_complete = true;
bool arm_wb = false;
int budget_per_ring;
int work_done = 0;
+ unsigned int tx_cleaned = 0;
if (test_bit(__I40E_VSI_DOWN, vsi->state)) {
napi_complete(napi);
@@ -2705,10 +2710,10 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
i40e_for_each_ring(ring, q_vector->tx) {
bool wd = ring->xsk_pool ?
i40e_clean_xdp_tx_irq(vsi, ring) :
- i40e_clean_tx_irq(vsi, ring, budget);
+ i40e_clean_tx_irq(vsi, ring, budget, &tx_cleaned);
if (!wd) {
- clean_complete = false;
+ clean_complete = tx_clean_complete = false;
continue;
}
arm_wb |= ring->arm_wb;
--
2.7.4
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI Joe Damato
@ 2022-10-14 3:54 ` G, GurucharanX
0 siblings, 0 replies; 9+ messages in thread
From: G, GurucharanX @ 2022-10-14 3:54 UTC (permalink / raw)
To: Joe Damato, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Joe Damato
> Sent: Saturday, October 8, 2022 3:09 AM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Joe Damato <jdamato@fastly.com>;
> kuba@kernel.org; davem@davemloft.net
> Subject: [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes
> cleaned during NAPI
>
> Update i40e_clean_tx_irq to take an out parameter (tx_cleaned) which
> stores the number TXs cleaned.
>
> No XDP related TX code is touched. Care has been taken to avoid changing
> the control flow of i40e_clean_tx_irq and i40e_napi_poll.
>
> Signed-off-by: Joe Damato <jdamato@fastly.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_txrx.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes cleaned during NAPI
2022-10-07 21:38 [Intel-wired-lan] [next-queue v4 0/4] Add an i40e_napi_poll tracepoint Joe Damato
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector Joe Damato
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI Joe Damato
@ 2022-10-07 21:38 ` Joe Damato
2022-10-14 3:55 ` G, GurucharanX
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint Joe Damato
3 siblings, 1 reply; 9+ messages in thread
From: Joe Damato @ 2022-10-07 21:38 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Joe Damato, kuba, davem
Adjust i40e_clean_rx_irq to accept an out parameter which records the number of
RX packets cleaned.
No XDP related code is modified and care has been taken to avoid changing
control flow.
Signed-off-by: Joe Damato <jdamato@fastly.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 274de1c..5901e58 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -2425,6 +2425,7 @@ static void i40e_inc_ntc(struct i40e_ring *rx_ring)
* i40e_clean_rx_irq - Clean completed descriptors from Rx ring - bounce buf
* @rx_ring: rx descriptor ring to transact packets on
* @budget: Total limit on number of packets to process
+ * @rx_cleaned: Out parameter of the number of packets processed
*
* This function provides a "bounce buffer" approach to Rx interrupt
* processing. The advantage to this is that on systems that have
@@ -2433,7 +2434,8 @@ static void i40e_inc_ntc(struct i40e_ring *rx_ring)
*
* Returns amount of work completed
**/
-static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
+static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget,
+ unsigned int *rx_cleaned)
{
unsigned int total_rx_bytes = 0, total_rx_packets = 0, frame_sz = 0;
u16 cleaned_count = I40E_DESC_UNUSED(rx_ring);
@@ -2570,6 +2572,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
i40e_update_rx_stats(rx_ring, total_rx_bytes, total_rx_packets);
+ *rx_cleaned = total_rx_packets;
+
/* guarantee a trip back through this routine if there was a failure */
return failure ? budget : (int)total_rx_packets;
}
@@ -2693,11 +2697,13 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
struct i40e_vsi *vsi = q_vector->vsi;
struct i40e_ring *ring;
bool tx_clean_complete = true;
+ bool rx_clean_complete = true;
bool clean_complete = true;
bool arm_wb = false;
int budget_per_ring;
int work_done = 0;
unsigned int tx_cleaned = 0;
+ unsigned int rx_cleaned = 0;
if (test_bit(__I40E_VSI_DOWN, vsi->state)) {
napi_complete(napi);
@@ -2738,12 +2744,12 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
i40e_for_each_ring(ring, q_vector->rx) {
int cleaned = ring->xsk_pool ?
i40e_clean_rx_irq_zc(ring, budget_per_ring) :
- i40e_clean_rx_irq(ring, budget_per_ring);
+ i40e_clean_rx_irq(ring, budget_per_ring, &rx_cleaned);
work_done += cleaned;
/* if we clean as many as budgeted, we must not be done */
if (cleaned >= budget_per_ring)
- clean_complete = false;
+ clean_complete = rx_clean_complete = false;
}
/* If work not completed, return budget and polling will return */
--
2.7.4
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes cleaned during NAPI
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes " Joe Damato
@ 2022-10-14 3:55 ` G, GurucharanX
0 siblings, 0 replies; 9+ messages in thread
From: G, GurucharanX @ 2022-10-14 3:55 UTC (permalink / raw)
To: Joe Damato, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Joe Damato
> Sent: Saturday, October 8, 2022 3:09 AM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Joe Damato <jdamato@fastly.com>;
> kuba@kernel.org; davem@davemloft.net
> Subject: [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes
> cleaned during NAPI
>
> Adjust i40e_clean_rx_irq to accept an out parameter which records the
> number of RX packets cleaned.
>
> No XDP related code is modified and care has been taken to avoid changing
> control flow.
>
> Signed-off-by: Joe Damato <jdamato@fastly.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_txrx.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint
2022-10-07 21:38 [Intel-wired-lan] [next-queue v4 0/4] Add an i40e_napi_poll tracepoint Joe Damato
` (2 preceding siblings ...)
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 3/4] i40e: Record number of RXes " Joe Damato
@ 2022-10-07 21:38 ` Joe Damato
2022-10-14 3:56 ` G, GurucharanX
3 siblings, 1 reply; 9+ messages in thread
From: Joe Damato @ 2022-10-07 21:38 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Joe Damato, kuba, davem
Add a tracepoint for i40e_napi_poll that allows users to get detailed
information about the amount of work done. This information can help users
better tune the correct NAPI parameters (like weight and budget), as well
as debug NIC settings like rx-usecs and tx-usecs, etc.
When perf is attached, this tracepoint only fires when not in XDP mode.
An example of the output from this tracepoint:
$ sudo perf trace -e i40e:i40e_napi_poll -a --call-graph=fp --libtraceevent_print
[..snip..]
388.258 :0/0 i40e:i40e_napi_poll(i40e_napi_poll on dev eth2 q i40e-eth2-TxRx-9 irq 346 irq_mask 00000000,00000000,00000000,00000000,00000000,00800000 curr_cpu 23 budget 64 bpr 64 rx_cleaned 28 tx_cleaned 0 rx_clean_complete 1 tx_clean_complete 1)
i40e_napi_poll ([i40e])
i40e_napi_poll ([i40e])
__napi_poll ([kernel.kallsyms])
net_rx_action ([kernel.kallsyms])
__do_softirq ([kernel.kallsyms])
common_interrupt ([kernel.kallsyms])
asm_common_interrupt ([kernel.kallsyms])
intel_idle_irq ([kernel.kallsyms])
cpuidle_enter_state ([kernel.kallsyms])
cpuidle_enter ([kernel.kallsyms])
do_idle ([kernel.kallsyms])
cpu_startup_entry ([kernel.kallsyms])
[0x243fd8] ([kernel.kallsyms])
secondary_startup_64_no_verify ([kernel.kallsyms])
Signed-off-by: Joe Damato <jdamato@fastly.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
---
drivers/net/ethernet/intel/i40e/i40e_trace.h | 49 ++++++++++++++++++++++++++++
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 +++
2 files changed, 53 insertions(+)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_trace.h b/drivers/net/ethernet/intel/i40e/i40e_trace.h
index b5b1229..79d587a 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_trace.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_trace.h
@@ -55,6 +55,55 @@
* being built from shared code.
*/
+#define NO_DEV "(i40e no_device)"
+
+TRACE_EVENT(i40e_napi_poll,
+
+ TP_PROTO(struct napi_struct *napi, struct i40e_q_vector *q, int budget,
+ int budget_per_ring, unsigned int rx_cleaned, unsigned int tx_cleaned,
+ bool rx_clean_complete, bool tx_clean_complete),
+
+ TP_ARGS(napi, q, budget, budget_per_ring, rx_cleaned, tx_cleaned,
+ rx_clean_complete, tx_clean_complete),
+
+ TP_STRUCT__entry(
+ __field(int, budget)
+ __field(int, budget_per_ring)
+ __field(unsigned int, rx_cleaned)
+ __field(unsigned int, tx_cleaned)
+ __field(int, rx_clean_complete)
+ __field(int, tx_clean_complete)
+ __field(int, irq_num)
+ __field(int, curr_cpu)
+ __string(qname, q->name)
+ __string(dev_name, napi->dev ? napi->dev->name : NO_DEV)
+ __bitmask(irq_affinity, nr_cpumask_bits)
+ ),
+
+ TP_fast_assign(
+ __entry->budget = budget;
+ __entry->budget_per_ring = budget_per_ring;
+ __entry->rx_cleaned = rx_cleaned;
+ __entry->tx_cleaned = tx_cleaned;
+ __entry->rx_clean_complete = rx_clean_complete;
+ __entry->tx_clean_complete = tx_clean_complete;
+ __entry->irq_num = q->irq_num;
+ __entry->curr_cpu = get_cpu();
+ __assign_str(qname, q->name);
+ __assign_str(dev_name, napi->dev ? napi->dev->name : NO_DEV);
+ __assign_bitmask(irq_affinity, cpumask_bits(&q->affinity_mask),
+ nr_cpumask_bits);
+ ),
+
+ TP_printk("i40e_napi_poll on dev %s q %s irq %d irq_mask %s curr_cpu %d "
+ "budget %d bpr %d rx_cleaned %u tx_cleaned %u "
+ "rx_clean_complete %d tx_clean_complete %d",
+ __get_str(dev_name), __get_str(qname), __entry->irq_num,
+ __get_bitmask(irq_affinity), __entry->curr_cpu, __entry->budget,
+ __entry->budget_per_ring, __entry->rx_cleaned, __entry->tx_cleaned,
+ __entry->rx_clean_complete, __entry->tx_clean_complete)
+);
+
/* Events related to a vsi & ring */
DECLARE_EVENT_CLASS(
i40e_tx_template,
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 5901e58..f2b1b94 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -2752,6 +2752,10 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
clean_complete = rx_clean_complete = false;
}
+ if (!i40e_enabled_xdp_vsi(vsi))
+ trace_i40e_napi_poll(napi, q_vector, budget, budget_per_ring, rx_cleaned,
+ tx_cleaned, rx_clean_complete, tx_clean_complete);
+
/* If work not completed, return budget and polling will return */
if (!clean_complete) {
int cpu_id = smp_processor_id();
--
2.7.4
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint
2022-10-07 21:38 ` [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint Joe Damato
@ 2022-10-14 3:56 ` G, GurucharanX
0 siblings, 0 replies; 9+ messages in thread
From: G, GurucharanX @ 2022-10-14 3:56 UTC (permalink / raw)
To: Joe Damato, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Joe Damato
> Sent: Saturday, October 8, 2022 3:09 AM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Joe Damato <jdamato@fastly.com>;
> kuba@kernel.org; davem@davemloft.net
> Subject: [Intel-wired-lan] [next-queue v4 4/4] i40e: Add i40e_napi_poll
> tracepoint
>
> Add a tracepoint for i40e_napi_poll that allows users to get detailed
> information about the amount of work done. This information can help users
> better tune the correct NAPI parameters (like weight and budget), as well as
> debug NIC settings like rx-usecs and tx-usecs, etc.
>
> When perf is attached, this tracepoint only fires when not in XDP mode.
>
> An example of the output from this tracepoint:
>
> $ sudo perf trace -e i40e:i40e_napi_poll -a --call-graph=fp --
> libtraceevent_print
>
> [..snip..]
>
> 388.258 :0/0 i40e:i40e_napi_poll(i40e_napi_poll on dev eth2 q i40e-eth2-
> TxRx-9 irq 346 irq_mask
> 00000000,00000000,00000000,00000000,00000000,00800000 curr_cpu 23
> budget 64 bpr 64 rx_cleaned 28 tx_cleaned 0 rx_clean_complete 1
> tx_clean_complete 1)
> i40e_napi_poll ([i40e])
> i40e_napi_poll ([i40e])
> __napi_poll ([kernel.kallsyms])
> net_rx_action ([kernel.kallsyms])
> __do_softirq ([kernel.kallsyms])
> common_interrupt ([kernel.kallsyms])
> asm_common_interrupt ([kernel.kallsyms])
> intel_idle_irq ([kernel.kallsyms])
> cpuidle_enter_state ([kernel.kallsyms])
> cpuidle_enter ([kernel.kallsyms])
> do_idle ([kernel.kallsyms])
> cpu_startup_entry ([kernel.kallsyms])
> [0x243fd8] ([kernel.kallsyms])
> secondary_startup_64_no_verify ([kernel.kallsyms])
>
> Signed-off-by: Joe Damato <jdamato@fastly.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Acked-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_trace.h | 49
> ++++++++++++++++++++++++++++
> drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 +++
> 2 files changed, 53 insertions(+)
>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 9+ messages in thread