On Mon, 23 Oct 2023 18:32:48 +0300 Pavel Vazharov <[email protected]> wrote:
> Hi there, > > We've a DPDK based application from which we need to take packet dumps from > time to time when problems arise. We are planning to use librte_pdump > functions and the dpdk-dumppcap tool. > I've few questions in related to the pdump functionality which we want to > use: > - Is calling `rte_pdump_init` at the startup of the main application > causing some overhead for the packet processing during its run if there is > no actual packet capturing enabled by the dpdk-dumppcap tool? I suppose > there should be some check in place but is it something like a single `if` > condition on a boolean flag or something heavier? > - Is it possible then to call `rte_pdump_init` during the runtime of the > main application only when I know that I'm about to start the dpdk-dumppcap > tool? I mean, is it supported and safe to call `rte_pdump_init` and > `rte_pdump_uninit` while the main application is running and processing > packets or these functions are supposed to be called only at application > startup and application stop. > > Thanks in advance, > Pavel. Short answer: The overhead only happens when the dump application is running. Long answer: Running rte_pdump_init() tells adds an additional service to the multi-process (primary/secondary) communication mechanism. Secondary and primary process connect with each other over Unix domain socket, and the services are handled by the multi-process thread in the primary process. Adding a service does not interact with fast path at all. The best way (as always) to discover this yourself is to read the source code and follow along.
