From: Joe Damato <jdamato@fastly.com> To: intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, kuba@kernel.org, davem@davemloft.net, anthony.l.nguyen@intel.com, jesse.brandeburg@intel.com, maciej.fijalkowski@intel.com, sridhar.samudrala@intel.com, Joe Damato <jdamato@fastly.com> Subject: [next-queue v4 0/4] Add an i40e_napi_poll tracepoint Date: Fri, 7 Oct 2022 14:38:39 -0700 [thread overview] Message-ID: <1665178723-52902-1-git-send-email-jdamato@fastly.com> (raw) Greetings: Welcome to v4. Debugging and tuning the NAPI and i40e NIC parameters can be a bit tricky as there are many different options to test. This change adds a tracepoint to i40e_napi_poll which exposes a lot of helpful debug information for users who'd like to get a better understanding of how their NIC is performing as they adjust various parameters and tuning knobs. Note: this series does not touch any XDP related code paths. This tracepoint will only work when not using XDP. Care has been taken to avoid changing control flow in i40e_napi_poll with this change. With this series applied, you can use the tracepoint with perf (assuming XDP is not being used) by running: $ sudo perf trace -e i40e:i40e_napi_poll -a --call-graph=fp --libtraceevent_print 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]) The output is verbose, but is helpful when trying to determine the impact of various turning parameters. Thanks, Joe v3 -> v4: - All XDP related changes were dropped from both the TX and RX paths (patches 2/4 and 3/4 were updated). - A conditional was added to only fire the tracepoint if XDP is NOT enabled (patch 4/4 updated). - Fixed format specifier for rx_cleaned and tx_cleaned (from %lu to %u in patch 4/4). v2 -> v3: - Add an rx_clean_complete to the RX patch so that it can be output in tracepoint instead of the valued of 'clean_complete' which can be ambiguous (patch 3/4 was updated). - Update the tracepoint to swap 'clean_complete' with 'rx_clean_complete' (patch 4/4 was updated). v1 -> v2: - TX path modified to push an out parameter through the function call chain instead of modifying control flow. - RX path modified to also use an out parameter to track the number of packets processed. - Naming of tracepoint struct members and format string modified to be more readable. Thanks, Joe Joe Damato (4): i40e: Store the irq number in i40e_q_vector i40e: Record number TXes cleaned during NAPI i40e: Record number of RXes cleaned during NAPI i40e: Add i40e_napi_poll tracepoint drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_main.c | 1 + drivers/net/ethernet/intel/i40e/i40e_trace.h | 49 ++++++++++++++++++++++++++++ drivers/net/ethernet/intel/i40e/i40e_txrx.c | 27 +++++++++++---- 4 files changed, 72 insertions(+), 6 deletions(-) -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Joe Damato <jdamato@fastly.com> 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 0/4] Add an i40e_napi_poll tracepoint Date: Fri, 7 Oct 2022 14:38:39 -0700 [thread overview] Message-ID: <1665178723-52902-1-git-send-email-jdamato@fastly.com> (raw) Greetings: Welcome to v4. Debugging and tuning the NAPI and i40e NIC parameters can be a bit tricky as there are many different options to test. This change adds a tracepoint to i40e_napi_poll which exposes a lot of helpful debug information for users who'd like to get a better understanding of how their NIC is performing as they adjust various parameters and tuning knobs. Note: this series does not touch any XDP related code paths. This tracepoint will only work when not using XDP. Care has been taken to avoid changing control flow in i40e_napi_poll with this change. With this series applied, you can use the tracepoint with perf (assuming XDP is not being used) by running: $ sudo perf trace -e i40e:i40e_napi_poll -a --call-graph=fp --libtraceevent_print 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]) The output is verbose, but is helpful when trying to determine the impact of various turning parameters. Thanks, Joe v3 -> v4: - All XDP related changes were dropped from both the TX and RX paths (patches 2/4 and 3/4 were updated). - A conditional was added to only fire the tracepoint if XDP is NOT enabled (patch 4/4 updated). - Fixed format specifier for rx_cleaned and tx_cleaned (from %lu to %u in patch 4/4). v2 -> v3: - Add an rx_clean_complete to the RX patch so that it can be output in tracepoint instead of the valued of 'clean_complete' which can be ambiguous (patch 3/4 was updated). - Update the tracepoint to swap 'clean_complete' with 'rx_clean_complete' (patch 4/4 was updated). v1 -> v2: - TX path modified to push an out parameter through the function call chain instead of modifying control flow. - RX path modified to also use an out parameter to track the number of packets processed. - Naming of tracepoint struct members and format string modified to be more readable. Thanks, Joe Joe Damato (4): i40e: Store the irq number in i40e_q_vector i40e: Record number TXes cleaned during NAPI i40e: Record number of RXes cleaned during NAPI i40e: Add i40e_napi_poll tracepoint drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_main.c | 1 + drivers/net/ethernet/intel/i40e/i40e_trace.h | 49 ++++++++++++++++++++++++++++ drivers/net/ethernet/intel/i40e/i40e_txrx.c | 27 +++++++++++---- 4 files changed, 72 insertions(+), 6 deletions(-) -- 2.7.4 _______________________________________________ Intel-wired-lan mailing list Intel-wired-lan@osuosl.org https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
next reply other threads:[~2022-10-07 21:39 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-10-07 21:38 Joe Damato [this message] 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 ` [next-queue v4 1/4] i40e: Store the irq number in i40e_q_vector Joe Damato 2022-10-07 21:38 ` [Intel-wired-lan] " Joe Damato 2022-10-14 3:56 ` G, GurucharanX 2022-10-14 3:56 ` G, GurucharanX 2022-10-07 21:38 ` [next-queue v4 2/4] i40e: Record number TXes cleaned during NAPI Joe Damato 2022-10-07 21:38 ` [Intel-wired-lan] " Joe Damato 2022-10-14 3:54 ` G, GurucharanX 2022-10-14 3:54 ` G, GurucharanX 2022-10-07 21:38 ` [next-queue v4 3/4] i40e: Record number of RXes " Joe Damato 2022-10-07 21:38 ` [Intel-wired-lan] " Joe Damato 2022-10-14 3:55 ` G, GurucharanX 2022-10-14 3:55 ` G, GurucharanX 2022-10-07 21:38 ` [next-queue v4 4/4] i40e: Add i40e_napi_poll tracepoint Joe Damato 2022-10-07 21:38 ` [Intel-wired-lan] " Joe Damato 2022-10-14 3:56 ` G, GurucharanX 2022-10-14 3:56 ` G, GurucharanX
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=1665178723-52902-1-git-send-email-jdamato@fastly.com \ --to=jdamato@fastly.com \ --cc=anthony.l.nguyen@intel.com \ --cc=davem@davemloft.net \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jesse.brandeburg@intel.com \ --cc=kuba@kernel.org \ --cc=maciej.fijalkowski@intel.com \ --cc=netdev@vger.kernel.org \ --cc=sridhar.samudrala@intel.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.