From patchwork Wed Mar 18 19:02:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob Kollanukkaran X-Patchwork-Id: 66850 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 64029A0579; Wed, 18 Mar 2020 20:02:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 40B0025D9; Wed, 18 Mar 2020 20:02:11 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 5C1C41AFF for ; Wed, 18 Mar 2020 20:02:09 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 02IJ0rr9010860; Wed, 18 Mar 2020 12:02:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0818; bh=906ygOzmsF2IxAyA6cFENOjspwMfv2owf5hSYMnYmho=; b=USnBZKMpuCG+XhsKlD8FvIhpzAHDH7DZDML3VmbGmIzOdk3RWz0bTGsCtYmSRmNw2k7h i6zr+3W6kb4j8ro7JeGAetcaj424HKip8MX6TUmS70j9QIRHmt4HoKVqQqN5PQ4WavFg uWA6XrXrOYeAc2kDzcefawgB+Z0+QZ0BVhDsn/T0L870Q5UA3NgTWB9qqocb0Ywlvgu+ 9Ctb373v0aIONV16S5VpEShMUoKAquaZUs68oBWQk/z1Fle/ZpmEri+r3/TCRXCjONjn TtvHUva1KPtV9Pg6v3gsAluMIG8dwn5ze1rDZvTet0vFhGGwWPuUIhwf/4IpV6gu/DbW pg== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0a-0016f401.pphosted.com with ESMTP id 2yu8pqm3n7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 18 Mar 2020 12:02:08 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 18 Mar 2020 12:02:06 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 18 Mar 2020 12:02:06 -0700 Received: from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 18 Mar 2020 12:02:05 -0700 Received: from jerin-lab.marvell.com (jerin-lab.marvell.com [10.28.34.14]) by maili.marvell.com (Postfix) with ESMTP id 63C6A3F7040; Wed, 18 Mar 2020 12:02:03 -0700 (PDT) From: To: CC: , , , , , , Jerin Jacob Date: Thu, 19 Mar 2020 00:32:09 +0530 Message-ID: <20200318190241.3150971-1-jerinj@marvell.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.645 definitions=2020-03-18_07:2020-03-18, 2020-03-18 signatures=0 Subject: [dpdk-dev] [PATCH v1 00/32] DPDK Trace support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Jerin Jacob It is the v1 version of the DPDK trace support based on the following RFC https://www.mail-archive.com/dev@dpdk.org/msg154457.html This patch set contains ~~~~~~~~~~~~~~~~~~~~~~~~ # The native implementation of common trace format(CTF)[1] based tracer # Public API to create the trace points. # Add tracepoints to eal, ethdev, mempool, eventdev and cryptodev library for tracing support # A unit test case # Performance test case to measure the trace overhead. (See eal/trace: # add trace performance test cases, patch) # Programmers guide for Trace support(See doc: add trace library guide, # patch) # Tested OS: ~~~~~~~~~~~ - Linux - FreeBSD # Tested open source CTF trace viewers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Babeltrace - Tracecompass # Trace overhead comparison with LTTng ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trace overhead data on x86:[2] # 236 cycles with LTTng(>100ns) # 18 cycles(7ns) with Native DPDK CTF emitter.(See eal/trace: add trace # performance test cases patch) trace overhead data on arm64: # 312 cycles to 1100 cycles with LTTng based on the class of arm64 # CPU. # 11 cycles to 13 cycles with Native DPDK CTF emitter based on the class of arm64 CPU. 18 cycles(on x86) vs 11 cycles(on arm64) is due to rdtsc() overhead in x86. It seems rdtsc takes around 15cycles in x86. Items that needs to be sort it out ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Checkpatch script reports errors for macros which emit events. Library exports set of macros(rte_trace_ctf_*) to emit events for various datatypes. Checkpatch scripts reports error for these macros, to be part of EXPERIMENTAL section, even symbols are updated in EXPERIMENTAL section in rte_eal_version.map file. # Makefile and meson.build are updated to allow experimental APIs. As multiple EXPERIMENTAL symbols, exported by trace library, are used in various drivers, lib, app and examples. So to fix compilation warning/error, Makefile and meson.build are updated for all required components to support EXPERIMENTAL APIs. It results same code changes at multiple components as well as increases source code line changes in patchset too. Suggestions are welcome to resolve this issue with lesser code changes More details: ~~~~~~~~~~~~~ # The Native DPDK CTF trace support does not have any dependency on third-party library. The generated output file is compatible with LTTng as both are using CTF trace format. The performance gain comes from: 1) exploit dpdk worker thread usage model to avoid atomics and use per core variables 2) use hugepage, 3) avoid a lot function pointers in fast-path etc 4) avoid unaligned store for arm64 etc Features: ~~~~~~~~~ - APIs and Features are similar to rte_log dynamic framework API(expect log prints on stdout vs it dumps on trace file) - No specific limit on the events. A string-based event like rte_log for pattern matching - Dynamic enable/disable support. - Instructmention overhead is ~1 cycle. i.e cost of adding the code wth out using trace feature. - Timestamp support for all the events using DPDK rte_rtdsc - No dependency on another library. Clean room native implementation of CTF. Functional test case: a) echo "trace_autotest" | sudo ./build/app/test/dpdk-test -c 0x3 --trace-level=8 The above command emits the following trace events uint8_t i; rte_trace_lib_eal_generic_void(); rte_trace_lib_eal_generic_u64(0x10000000000000); rte_trace_lib_eal_generic_u32(0x10000000); rte_trace_lib_eal_generic_u16(0xffee); rte_trace_lib_eal_generic_u8(0xc); rte_trace_lib_eal_generic_i64(-1234); rte_trace_lib_eal_generic_i32(-1234567); rte_trace_lib_eal_generic_i16(12); rte_trace_lib_eal_generic_i8(-3); rte_trace_lib_eal_generic_string("my string"); rte_trace_lib_eal_generic_function(__func__); for (i = 0; i < 128; i++) rte_trace_lib_eal_generic_u8(i); Install babeltrace package in Linux and point the generated trace file to babel trace. By default trace file created under /dpdk-traces/time_stamp/ example: # babeltrace /root/dpdk-traces/rte-2020-02-15-PM-02-56-51 | more [13:27:36.138468807] (+?.?????????) lib.eal.generic.void: { cpu_id = 0, name = "dpdk-test" }, { } [13:27:36.138468851] (+0.000000044) lib.eal.generic.u64: { cpu_id = 0, name = "dpdk-test" }, { in = 4503599627370496 } [13:27:36.138468860] (+0.000000009) lib.eal.generic.u32: { cpu_id = 0, name = "dpdk-test" }, { in = 268435456 } [13:27:36.138468934] (+0.000000074) lib.eal.generic.u16: { cpu_id = 0, name = "dpdk-test" }, { in = 65518 } [13:27:36.138468949] (+0.000000015) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 12 } [13:27:36.138468956] (+0.000000007) lib.eal.generic.i64: { cpu_id = 0, name = "dpdk-test" }, { in = -1234 } [13:27:36.138468963] (+0.000000007) lib.eal.generic.i32: { cpu_id = 0, name = "dpdk-test" }, { in = -1234567 } [13:27:36.138469024] (+0.000000061) lib.eal.generic.i16: { cpu_id = 0, name = "dpdk-test" }, { in = 12 } [13:27:36.138469044] (+0.000000020) lib.eal.generic.i8: { cpu_id = 0, name = "dpdk-test" }, { in = -3 } [13:27:36.138469051] (+0.000000007) lib.eal.generic.string: { cpu_id = 0, name = "dpdk-test" }, { str = "my string" } [13:27:36.138469203] (+0.000000152) lib.eal.generic.func: { cpu_id = 0, name = "dpdk-test" }, { func = "test_trace_points" } [13:27:36.138469239] (+0.000000036) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 0 } [13:27:36.138469246] (+0.000000007) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 1 } [13:27:36.138469252] (+0.000000006) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 2 } [13:27:36.138469262] (+0.000000010) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 3 } [13:27:36.138469269] (+0.000000007) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 4 } [13:27:36.138469276] (+0.000000007) lib.eal.generic.u8: { cpu_id = 0, name = "dpdk-test" }, { in = 5 } # There is a GUI based trace viewer available in Windows, Linux and # Mac. It is called as tracecompass.(https://www.eclipse.org/tracecompass/) The example screenshot and Histogram of above DPDK trace using Tracecompass. https://github.com/jerinjacobk/share/blob/master/dpdk_trace.JPG File walk through: ~~~~~~~~~~~~~~~~~~ lib/librte_eal/common/include/rte_trace.h - Public API for Trace provider and Trace control lib/librte_eal/common/eal_common_trace.c - main trace implementation lib/librte_eal/common/eal_common_trace_ctf.c - CTF metadata spec implementation lib/librte_eal/common/eal_common_trace_utils.c - command line utils and filesystem operations. lib/librte_eal/common/eal_common_trace_points.c - trace points for EAL library lib/librte_eal/common/include/rte_trace_eal.h - EAL tracepoint public API. lib/librte_eal/common/eal_trace.h - Private trace header file. [1] https://diamon.org/ctf/ [2] The above test is ported to LTTng for finding the LTTng trace overhead. It available at https://github.com/jerinjacobk/lttng-overhead https://github.com/jerinjacobk/lttng-overhead/blob/master/README Jerin Jacob (21): eal: introduce API for getting thread name eal: define the public API for trace support eal/trace: implement trace register API eal/trace: implement trace operation APIs eal/trace: add internal trace init and fini interface eal/trace: get bootup timestamp for trace eal/trace: create CTF TDSL metadata in memory eal/trace: implement trace memory allocation eal/trace: implement debug dump function eal/trace: implement trace save eal/trace: implement registration payload eal/trace: implement provider payload eal/trace: hook internal trace APIs to Linux eal/trace: hook internal trace APIs to FreeBSD eal/trace: add generic tracepoints eal/trace: add alarm tracepoints eal/trace: add memory tracepoints eal/trace: add memzone tracepoints eal/trace: add thread tracepoints eal/trace: add interrupt tracepoints eal/trace: add trace performance test cases Sunil Kumar Kori (11): eal/trace: handle CTF keyword collision eal/trace: add trace level configuration parameter eal/trace: add trace dir configuration parameter eal/trace: add trace bufsize configuration parameter eal/trace: add trace mode configuration parameter eal/trace: add unit test cases ethdev: add tracepoints eventdev: add tracepoints cryptodev: add tracepoints mempool: add tracepoints doc: add trace library guide MAINTAINERS | 15 + app/pdump/Makefile | 1 + app/pdump/meson.build | 1 + app/proc-info/Makefile | 1 + app/proc-info/meson.build | 1 + app/test-acl/Makefile | 1 + app/test-acl/meson.build | 1 + app/test-cmdline/Makefile | 1 + app/test-cmdline/meson.build | 1 + app/test-eventdev/Makefile | 1 + app/test-eventdev/meson.build | 1 + app/test-pipeline/Makefile | 1 + app/test-pipeline/meson.build | 1 + app/test/Makefile | 4 +- app/test/meson.build | 3 + app/test/test_trace.c | 618 ++++++++++++++++++ app/test/test_trace.h | 52 ++ app/test/test_trace_perf.c | 179 +++++ app/test/test_trace_register.c | 46 ++ config/common_base | 1 + config/rte_config.h | 1 + doc/api/doxy-api-index.md | 3 +- doc/guides/linux_gsg/eal_args.include.rst | 55 ++ doc/guides/prog_guide/index.rst | 1 + doc/guides/prog_guide/trace_lib.rst | 264 ++++++++ doc/guides/rel_notes/release_20_05.rst | 4 + drivers/common/cpt/Makefile | 1 + drivers/crypto/ccp/Makefile | 1 + drivers/crypto/ccp/meson.build | 2 + drivers/crypto/mvsam/Makefile | 1 + drivers/crypto/mvsam/meson.build | 1 + drivers/crypto/null/Makefile | 1 + drivers/crypto/null/meson.build | 1 + drivers/crypto/scheduler/Makefile | 1 + drivers/crypto/scheduler/meson.build | 1 + drivers/crypto/virtio/Makefile | 1 + drivers/crypto/virtio/meson.build | 1 + drivers/event/octeontx/Makefile | 1 + drivers/event/octeontx/meson.build | 1 + drivers/event/skeleton/Makefile | 1 + drivers/event/skeleton/meson.build | 1 + drivers/event/sw/Makefile | 1 + drivers/event/sw/meson.build | 1 + drivers/mempool/ring/Makefile | 1 + drivers/mempool/ring/meson.build | 1 + drivers/net/af_packet/Makefile | 1 + drivers/net/af_packet/meson.build | 1 + drivers/net/af_xdp/Makefile | 1 + drivers/net/af_xdp/meson.build | 1 + drivers/net/ark/Makefile | 1 + drivers/net/ark/meson.build | 1 + drivers/net/bnxt/Makefile | 1 + drivers/net/bnxt/meson.build | 1 + drivers/net/cxgbe/Makefile | 1 + drivers/net/cxgbe/meson.build | 1 + drivers/net/enetc/Makefile | 1 + drivers/net/enetc/meson.build | 1 + drivers/net/hinic/Makefile | 1 + drivers/net/hinic/base/meson.build | 3 +- drivers/net/hinic/meson.build | 1 + drivers/net/ionic/ionic_dev.c | 1 + drivers/net/ionic/ionic_dev.h | 2 + drivers/net/ionic/ionic_mac_api.c | 1 + drivers/net/ionic/ionic_main.c | 1 + drivers/net/ionic/ionic_osdep.h | 6 - drivers/net/ionic/ionic_rx_filter.c | 1 + drivers/net/kni/Makefile | 1 + drivers/net/kni/meson.build | 1 + drivers/net/liquidio/Makefile | 1 + drivers/net/liquidio/meson.build | 1 + drivers/net/mvneta/Makefile | 1 + drivers/net/mvneta/meson.build | 1 + drivers/net/mvpp2/Makefile | 1 + drivers/net/mvpp2/meson.build | 1 + drivers/net/nfb/Makefile | 1 + drivers/net/nfb/meson.build | 1 + drivers/net/null/Makefile | 1 + drivers/net/null/meson.build | 1 + drivers/net/octeontx/Makefile | 1 + drivers/net/octeontx2/Makefile | 1 + drivers/net/octeontx2/meson.build | 1 + drivers/net/pcap/Makefile | 1 + drivers/net/pcap/meson.build | 1 + drivers/net/ring/Makefile | 1 + drivers/net/ring/meson.build | 1 + drivers/net/szedata2/Makefile | 1 + drivers/net/szedata2/meson.build | 1 + drivers/net/thunderx/base/meson.build | 1 + drivers/net/vhost/Makefile | 1 + drivers/net/vhost/meson.build | 1 + drivers/raw/ioat/Makefile | 1 + drivers/raw/ioat/meson.build | 1 + drivers/raw/octeontx2_dma/Makefile | 1 + drivers/raw/octeontx2_dma/meson.build | 1 + drivers/raw/octeontx2_ep/Makefile | 1 + drivers/raw/octeontx2_ep/meson.build | 1 + drivers/raw/skeleton/Makefile | 1 + drivers/raw/skeleton/meson.build | 1 + examples/cmdline/Makefile | 1 + examples/cmdline/meson.build | 1 + examples/distributor/Makefile | 1 + examples/distributor/meson.build | 1 + examples/ethtool/ethtool-app/Makefile | 1 + examples/flow_filtering/Makefile | 1 + examples/flow_filtering/meson.build | 1 + examples/helloworld/Makefile | 1 + examples/helloworld/meson.build | 1 + examples/ioat/Makefile | 1 + examples/ioat/meson.build | 1 + examples/ip_reassembly/Makefile | 1 + examples/ip_reassembly/meson.build | 1 + examples/ipv4_multicast/Makefile | 1 + examples/ipv4_multicast/meson.build | 1 + examples/l2fwd-cat/Makefile | 1 + examples/l2fwd-cat/meson.build | 1 + examples/l2fwd-event/Makefile | 1 + examples/l2fwd-event/meson.build | 1 + examples/l2fwd-jobstats/Makefile | 1 + examples/l2fwd-jobstats/meson.build | 1 + examples/l2fwd-keepalive/Makefile | 1 + examples/l2fwd-keepalive/ka-agent/Makefile | 1 + examples/l2fwd-keepalive/meson.build | 1 + examples/l3fwd-acl/Makefile | 1 + examples/l3fwd-acl/meson.build | 1 + examples/l3fwd/Makefile | 1 + examples/l3fwd/meson.build | 1 + examples/link_status_interrupt/Makefile | 1 + examples/link_status_interrupt/meson.build | 1 + .../client_server_mp/mp_client/Makefile | 1 + .../client_server_mp/mp_client/meson.build | 1 + .../client_server_mp/mp_server/meson.build | 1 + examples/multi_process/hotplug_mp/Makefile | 1 + examples/multi_process/hotplug_mp/meson.build | 1 + examples/multi_process/simple_mp/Makefile | 1 + examples/multi_process/simple_mp/meson.build | 1 + examples/multi_process/symmetric_mp/Makefile | 1 + .../multi_process/symmetric_mp/meson.build | 1 + examples/packet_ordering/Makefile | 1 + examples/packet_ordering/meson.build | 1 + .../performance-thread/l3fwd-thread/Makefile | 1 + .../l3fwd-thread/meson.build | 1 + .../performance-thread/pthread_shim/Makefile | 1 + .../pthread_shim/meson.build | 1 + examples/ptpclient/Makefile | 1 + examples/ptpclient/meson.build | 1 + examples/qos_meter/Makefile | 1 + examples/qos_meter/meson.build | 1 + examples/qos_sched/Makefile | 1 + examples/qos_sched/meson.build | 1 + examples/server_node_efd/node/Makefile | 1 + examples/server_node_efd/node/meson.build | 1 + examples/server_node_efd/server/Makefile | 1 + examples/server_node_efd/server/meson.build | 1 + examples/service_cores/Makefile | 1 + examples/service_cores/meson.build | 1 + examples/skeleton/Makefile | 1 + examples/skeleton/meson.build | 1 + examples/timer/Makefile | 1 + examples/timer/meson.build | 1 + examples/vm_power_manager/Makefile | 1 + examples/vm_power_manager/meson.build | 1 + examples/vmdq/Makefile | 1 + examples/vmdq/meson.build | 1 + examples/vmdq_dcb/Makefile | 1 + examples/vmdq_dcb/meson.build | 1 + lib/librte_bitratestats/Makefile | 1 + lib/librte_bitratestats/meson.build | 1 + lib/librte_cryptodev/Makefile | 4 +- lib/librte_cryptodev/cryptodev_trace_points.c | 70 ++ lib/librte_cryptodev/meson.build | 7 +- lib/librte_cryptodev/rte_cryptodev.c | 18 + lib/librte_cryptodev/rte_cryptodev.h | 6 + .../rte_cryptodev_version.map | 18 + lib/librte_cryptodev/rte_trace_cryptodev.h | 133 ++++ lib/librte_cryptodev/rte_trace_cryptodev_fp.h | 34 + lib/librte_distributor/Makefile | 1 + lib/librte_distributor/meson.build | 1 + lib/librte_eal/common/Makefile | 1 + lib/librte_eal/common/eal_common_log.c | 9 +- lib/librte_eal/common/eal_common_memzone.c | 9 + lib/librte_eal/common/eal_common_options.c | 68 +- lib/librte_eal/common/eal_common_thread.c | 3 +- lib/librte_eal/common/eal_common_trace.c | 616 +++++++++++++++++ lib/librte_eal/common/eal_common_trace_ctf.c | 488 ++++++++++++++ .../common/eal_common_trace_points.c | 115 ++++ .../common/eal_common_trace_utils.c | 518 +++++++++++++++ lib/librte_eal/common/eal_options.h | 8 + lib/librte_eal/common/eal_private.h | 11 + lib/librte_eal/common/eal_trace.h | 122 ++++ lib/librte_eal/common/include/rte_lcore.h | 17 + lib/librte_eal/common/include/rte_trace.h | 587 +++++++++++++++++ lib/librte_eal/common/include/rte_trace_eal.h | 247 +++++++ .../common/include/rte_trace_provider.h | 130 ++++ .../common/include/rte_trace_register.h | 70 ++ lib/librte_eal/common/meson.build | 8 + lib/librte_eal/common/rte_malloc.c | 60 +- lib/librte_eal/freebsd/eal/Makefile | 4 + lib/librte_eal/freebsd/eal/eal.c | 10 + lib/librte_eal/freebsd/eal/eal_alarm.c | 3 + lib/librte_eal/freebsd/eal/eal_interrupts.c | 52 +- lib/librte_eal/freebsd/eal/eal_thread.c | 21 +- lib/librte_eal/linux/eal/Makefile | 4 + lib/librte_eal/linux/eal/eal.c | 9 + lib/librte_eal/linux/eal/eal_alarm.c | 4 + lib/librte_eal/linux/eal/eal_interrupts.c | 84 ++- lib/librte_eal/linux/eal/eal_thread.c | 27 +- lib/librte_eal/rte_eal_version.map | 61 ++ lib/librte_ethdev/Makefile | 3 + lib/librte_ethdev/ethdev_trace_points.c | 43 ++ lib/librte_ethdev/meson.build | 5 +- lib/librte_ethdev/rte_ethdev.c | 12 + lib/librte_ethdev/rte_ethdev.h | 5 + lib/librte_ethdev/rte_ethdev_version.map | 10 + lib/librte_ethdev/rte_trace_ethdev.h | 90 +++ lib/librte_ethdev/rte_trace_ethdev_fp.h | 40 ++ lib/librte_eventdev/Makefile | 3 + lib/librte_eventdev/eventdev_trace_points.c | 173 +++++ lib/librte_eventdev/meson.build | 3 + .../rte_event_crypto_adapter.c | 10 + .../rte_event_eth_rx_adapter.c | 11 + .../rte_event_eth_tx_adapter.c | 13 +- .../rte_event_eth_tx_adapter.h | 2 + lib/librte_eventdev/rte_event_timer_adapter.c | 8 +- lib/librte_eventdev/rte_event_timer_adapter.h | 8 + lib/librte_eventdev/rte_eventdev.c | 9 + lib/librte_eventdev/rte_eventdev.h | 5 +- lib/librte_eventdev/rte_eventdev_version.map | 42 ++ lib/librte_eventdev/rte_trace_eventdev.h | 278 ++++++++ lib/librte_eventdev/rte_trace_eventdev_fp.h | 75 +++ lib/librte_gro/Makefile | 1 + lib/librte_gro/meson.build | 1 + lib/librte_gso/Makefile | 1 + lib/librte_gso/meson.build | 1 + lib/librte_ip_frag/Makefile | 1 + lib/librte_ip_frag/meson.build | 1 + lib/librte_kni/Makefile | 1 + lib/librte_kni/meson.build | 1 + lib/librte_latencystats/Makefile | 1 + lib/librte_latencystats/meson.build | 1 + lib/librte_mempool/Makefile | 3 + lib/librte_mempool/mempool_trace_points.c | 108 +++ lib/librte_mempool/meson.build | 7 +- lib/librte_mempool/rte_mempool.c | 16 + lib/librte_mempool/rte_mempool.h | 13 + lib/librte_mempool/rte_mempool_ops.c | 7 + lib/librte_mempool/rte_mempool_version.map | 26 + lib/librte_mempool/rte_trace_mempool.h | 148 +++++ lib/librte_mempool/rte_trace_mempool_fp.h | 102 +++ lib/librte_port/Makefile | 1 + lib/librte_port/meson.build | 1 + lib/librte_reorder/Makefile | 1 + lib/librte_reorder/meson.build | 1 + lib/librte_sched/Makefile | 1 + lib/librte_sched/meson.build | 1 + lib/librte_security/Makefile | 1 + lib/librte_security/meson.build | 1 + lib/librte_table/Makefile | 1 + lib/librte_table/meson.build | 1 + 258 files changed, 6276 insertions(+), 88 deletions(-) create mode 100644 app/test/test_trace.c create mode 100644 app/test/test_trace.h create mode 100644 app/test/test_trace_perf.c create mode 100644 app/test/test_trace_register.c create mode 100644 doc/guides/prog_guide/trace_lib.rst create mode 100644 lib/librte_cryptodev/cryptodev_trace_points.c create mode 100644 lib/librte_cryptodev/rte_trace_cryptodev.h create mode 100644 lib/librte_cryptodev/rte_trace_cryptodev_fp.h create mode 100644 lib/librte_eal/common/eal_common_trace.c create mode 100644 lib/librte_eal/common/eal_common_trace_ctf.c create mode 100644 lib/librte_eal/common/eal_common_trace_points.c create mode 100644 lib/librte_eal/common/eal_common_trace_utils.c create mode 100644 lib/librte_eal/common/eal_trace.h create mode 100644 lib/librte_eal/common/include/rte_trace.h create mode 100644 lib/librte_eal/common/include/rte_trace_eal.h create mode 100644 lib/librte_eal/common/include/rte_trace_provider.h create mode 100644 lib/librte_eal/common/include/rte_trace_register.h create mode 100644 lib/librte_ethdev/ethdev_trace_points.c create mode 100644 lib/librte_ethdev/rte_trace_ethdev.h create mode 100644 lib/librte_ethdev/rte_trace_ethdev_fp.h create mode 100644 lib/librte_eventdev/eventdev_trace_points.c create mode 100644 lib/librte_eventdev/rte_trace_eventdev.h create mode 100644 lib/librte_eventdev/rte_trace_eventdev_fp.h create mode 100644 lib/librte_mempool/mempool_trace_points.c create mode 100644 lib/librte_mempool/rte_trace_mempool.h create mode 100644 lib/librte_mempool/rte_trace_mempool_fp.h