From patchwork Thu Oct 6 23:43:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1687253 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=xksSvvZk; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Mk7N645Pqz1yqk for ; Fri, 7 Oct 2022 10:45:10 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id DD51A60F67; Thu, 6 Oct 2022 23:45:08 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org DD51A60F67 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1665099908; bh=QdiYS8gXw/QYYVtpxP3fIH2x4jTUX49PEwe9YvA/7TA=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=xksSvvZka0Z62KKkT+nwJ/iymO8YRqL68EpMkDQ2WjEXg7XKl6Y8TR/mjnsAbT7vM rZgXg6jJZgF6o/uKAIucWkKnVV0k6K4PETR4FSbgwj1SlXuCUhO2aBqPU7Hrs3RHCw w3DHUPfCsvj7+XqBwfzbu9+VbSHHRZAMgercUvm/1PifLxRM/lViVABH5dVMldmyfC VuXv+hEc927u28bOmMbZCq2XhvauKkmtwsXcRn5lq41qbMEbeH0pRv5XEoEZ2g/eiu XrotL3FFYKNwYihpFL+4s2vEwZMW/FnNb5m99njaHtW9vGOw8bEU/aqy1TTscymI1C LEE0bkAmqMKHA== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jhe8psIkFuSG; Thu, 6 Oct 2022 23:45:08 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id C8DB460FEE; Thu, 6 Oct 2022 23:45:07 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org C8DB460FEE X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 9E8E41BF3BE for ; Thu, 6 Oct 2022 23:44:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 873BF83FE1 for ; Thu, 6 Oct 2022 23:44:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 873BF83FE1 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0ZWHfjWD5XUw for ; Thu, 6 Oct 2022 23:44:55 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org BDEC483F7F Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by smtp1.osuosl.org (Postfix) with ESMTPS id BDEC483F7F for ; Thu, 6 Oct 2022 23:44:55 +0000 (UTC) Received: by mail-pl1-x62c.google.com with SMTP id c24so3104268plo.3 for ; Thu, 06 Oct 2022 16:44:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fhIe4opXdjUh8mNpL1rwMr/9TEGMnR0baVf0pW0/BGU=; b=AnI7wkcJJYLjofEFh9+9WHDv63Fv90/r2fNmy+mGUXNBifIx0FPN7Nm8ID60j390XS iMJ1W87jf4N9FAyf+1uDS5C4uiQCAgZlyyhgCM9wGfv9Q4mbvWZiHD/9M3DKUrHCxEUE akUVlC3kltbIGrH7e3/u99/yRaGoryVmIwdXprIPuJiqLGYi2LSUZNHjTNwoahhtGIx2 ccZSIXP0dBpE6/hHQI/Q6HgmTKEKbPpWHOWe+tmRHqRpuSWiOoQEfsHazgdaP0MbwAhi Qa3n6I1IPITnv8xiKUtU3MKB2s3yP11Vlh8oDZkCfga/cYZXeMxlKbjjTOIQ/RScu1sd ECMg== X-Gm-Message-State: ACrzQf3daSou+cp3DpUK5N5S7hyWGsDixuZO1Uc528F2q5UU7GeSSROx UF69SmfLU1fdnDqCSUq8N9oLvWgI1z7P9fIxNxo6fAmabNr+YiUVqPY1TrhJED5iARKnEprJ7AW bc+bLkNXfREczmXbHJCrrCvp8F0JzIC7VW8I8CUiWFOmIl9Kp14SjSI3nIKEFYei+OiLDFrnv7D UQk8mWzg== X-Google-Smtp-Source: AMsMyM5ucM1qiqNhjEgzOEPdBcwGFJEYC0pzNKm9cBbYUrmgS1ykVv/eAZGW2zLmxC96EK6Wcv4Qew== X-Received: by 2002:a17:90b:4f42:b0:203:1cf4:6a56 with SMTP id pj2-20020a17090b4f4200b002031cf46a56mr2312843pjb.30.1665099894848; Thu, 06 Oct 2022 16:44:54 -0700 (PDT) Received: from localhost.localdomain (c-24-6-151-244.hsd1.ca.comcast.net. [24.6.151.244]) by smtp.gmail.com with ESMTPSA id u4-20020a631404000000b0045935b12e97sm308124pgl.36.2022.10.06.16.44.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Oct 2022 16:44:54 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Thu, 6 Oct 2022 16:43:58 -0700 Message-Id: <1665099838-94839-5-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1665099838-94839-1-git-send-email-jdamato@fastly.com> References: <1665099838-94839-1-git-send-email-jdamato@fastly.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=fhIe4opXdjUh8mNpL1rwMr/9TEGMnR0baVf0pW0/BGU=; b=G0QqvsWvKrWyeVbTnCn5YNjs3vB0CsMGFUAgKnQTRE0jt6d0lYuhs3HbVG9LSy26d3 Sl1CKqlwc1EdRus4M+mSku3geMqDsCeByxfRyIa8DDQPe9hRHfB/c2f3dMlYsa/qSvLi OXR36+doOu2cjFPCKTVR/9NNXq6GmlP3FGasQ= X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=G0QqvsWv Subject: [Intel-wired-lan] [next-queue v3 4/4] i40e: Add i40e_napi_poll tracepoint X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Joe Damato , kuba@kernel.org, davem@davemloft.net MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" 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. 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 --- drivers/net/ethernet/intel/i40e/i40e_trace.h | 49 ++++++++++++++++++++++++++++ drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 ++ 2 files changed, 52 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e_trace.h b/drivers/net/ethernet/intel/i40e/i40e_trace.h index b5b1229..7d7c161 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 %lu tx_cleaned %lu " + "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 adf133b..fb9add8 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2753,6 +2753,9 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) clean_complete = rx_clean_complete = false; } + 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();