rte_mbuf_history.h(3)

NAME
rte_mbuf_history.h

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.