rte_mbuf_history.h - Man Page

Synopsis

#include <rte_common​.h>
#include <rte_debug​.h>
#include <rte_mbuf_dyn​.h>

Macros

#define RTE_MBUF_HISTORY_BITS   4
#define RTE_MBUF_HISTORY_MAX   (sizeof(rte_mbuf_history_t) * 8 / RTE_MBUF_HISTORY_BITS)

Enumerations

enum rte_mbuf_history_op { RTE_MBUF_HISTORY_OP_NEVER = 0, RTE_MBUF_HISTORY_OP_LIB_FREE = 1, RTE_MBUF_HISTORY_OP_PMD_FREE = 2, RTE_MBUF_HISTORY_OP_APP_FREE = 3, RTE_MBUF_HISTORY_OP_LIB_ALLOC = 4, RTE_MBUF_HISTORY_OP_PMD_ALLOC = 5, RTE_MBUF_HISTORY_OP_APP_ALLOC = 6, RTE_MBUF_HISTORY_OP_RX = 7, RTE_MBUF_HISTORY_OP_TX = 8, RTE_MBUF_HISTORY_OP_TX_PREP = 9, RTE_MBUF_HISTORY_OP_TX_BUSY = 10, RTE_MBUF_HISTORY_OP_ENQUEUE = 11, RTE_MBUF_HISTORY_OP_DEQUEUE = 12, RTE_MBUF_HISTORY_OP_USR2 = 14, RTE_MBUF_HISTORY_OP_USR1 = 15, RTE_MBUF_HISTORY_OP_MAX = 16 }

Functions

__rte_experimental void rte_mbuf_history_init (void)
static void rte_mbuf_history_mark (struct rte_mbuf *m, enum rte_mbuf_history_op op)
static void rte_mbuf_history_mark_bulk (struct rte_mbuf *const *mbufs, unsigned int count, enum rte_mbuf_history_op op)
__rte_experimental void rte_mbuf_history_dump (FILE *f, const struct rte_mbuf *m)
__rte_experimental void rte_mbuf_history_dump_mempool (FILE *f, struct rte_mempool *mp)
__rte_experimental void rte_mbuf_history_dump_all (FILE *f)

Variables

int rte_mbuf_history_field_offset

Detailed Description

Warning

EXPERIMENTAL: this API may change without prior notice​.

These functions allow to track history of mbuf objects using a dynamic field​.

It tracks the lifecycle of mbuf objects through the system with a fixed set of predefined events to maintain performance​.

The history is stored as an atomic value (64-bit) in a dynamic field of the mbuf, with each event encoded in 4 bits, allowing up to 16 events to be tracked​. Atomic operations ensure thread safety for cloned mbufs accessed by multiple lcores​.

After dumping the history in a file, the script dpdk-mbuf-history-parser​.py can be used for parsing​.

Definition in file rte_mbuf_history​.h​.

Macro Definition Documentation

#define RTE_MBUF_HISTORY_BITS   4

Number of bits for each history operation​.

Definition at line 43 of file rte_mbuf_history​.h​.

#define RTE_MBUF_HISTORY_MAX   (sizeof(rte_mbuf_history_t) * 8 / RTE_MBUF_HISTORY_BITS)

Maximum number of history operations that can be stored​.

Definition at line 48 of file rte_mbuf_history​.h​.

Enumeration Type Documentation

enum rte_mbuf_history_op

History operation types​.

Enumerator

RTE_MBUF_HISTORY_OP_NEVER

Initial state - never allocated

RTE_MBUF_HISTORY_OP_LIB_FREE

Freed back to pool

RTE_MBUF_HISTORY_OP_PMD_FREE

Freed by PMD

RTE_MBUF_HISTORY_OP_APP_FREE

Freed by application

RTE_MBUF_HISTORY_OP_LIB_ALLOC

Allocation in mbuf library

RTE_MBUF_HISTORY_OP_PMD_ALLOC

Allocated by PMD for Rx

RTE_MBUF_HISTORY_OP_APP_ALLOC

Allocated by application

RTE_MBUF_HISTORY_OP_RX

Received

RTE_MBUF_HISTORY_OP_TX

Sent

RTE_MBUF_HISTORY_OP_TX_PREP

Being prepared before Tx

RTE_MBUF_HISTORY_OP_TX_BUSY

Returned due to Tx busy

RTE_MBUF_HISTORY_OP_ENQUEUE

Enqueued for processing

RTE_MBUF_HISTORY_OP_DEQUEUE

Dequeued for processing

RTE_MBUF_HISTORY_OP_USR2

Application-defined event 2

RTE_MBUF_HISTORY_OP_USR1

Application-defined event 1

RTE_MBUF_HISTORY_OP_MAX

Maximum number of operation types

Definition at line 53 of file rte_mbuf_history​.h​.

Function Documentation

__rte_experimental void rte_mbuf_history_init (void )

Initialize the mbuf history system​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

This function registers the dynamic field for mbuf history tracking​. It should be called once during application initialization​.

Note: This function is called by rte_pktmbuf_pool_create, so explicit invocation is usually not required​.

void rte_mbuf_history_mark (struct rte_mbuf * m, enum rte_mbuf_history_op op) [inline], [static]

Mark an mbuf with a history event​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

Parameters

m Pointer to the mbuf​.
op The operation to record​.

Definition at line 105 of file rte_mbuf_history​.h​.

void rte_mbuf_history_mark_bulk (struct rte_mbuf *const * mbufs, unsigned int count, enum rte_mbuf_history_op op) [inline], [static]

Mark multiple mbufs with a history event​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

Parameters

mbufs Array of mbuf pointers​.
count Number of mbufs to mark​.
op The operation to record​.

Definition at line 142 of file rte_mbuf_history​.h​.

__rte_experimental void rte_mbuf_history_dump (FILE * f, const struct rte_mbuf * m)

Dump mbuf history for a single mbuf to a file​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

EXPERIMENTAL: this API may change without prior notice​.

Parameters

f File pointer to write the history to​.
m Pointer to the mbuf to dump history for​.

__rte_experimental void rte_mbuf_history_dump_mempool (FILE * f, struct rte_mempool * mp)

Dump mbuf history statistics for a single mempool to a file​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

Parameters

f File pointer to write the history statistics to​.
mp Pointer to the mempool to dump history for​.

__rte_experimental void rte_mbuf_history_dump_all (FILE * f)

Dump mbuf history statistics for all mempools to a file​.

Warning

EXPERIMENTAL: this API may change without prior notice​.

Parameters

f File pointer to write the history statistics to​.

Variable Documentation

int rte_mbuf_history_field_offset [extern]

Global offset for the history dynamic field (set during initialization)​.

Author

Generated automatically by Doxygen for DPDK from the source code​.

Info

Version 25.11.3 DPDK