Library

概述

参考:

DPDK 的主要对外函数接口通常以 rte_(runtime environment) 作为前缀。

内存管理

CPU 管理

  • etc.

CPU 包处理

  • etc.

Device Libraries

  • etc.

Protocol Processing Libraries

  • etc.

High-Level Libraries

Utility Libraries

  • Metrics Library
  • Telemetry Library(遥测库) # 遥测库提供了一个接口,用于从各种 DPDK 库中检索信息。该库通过 Unix Socket 提供这些信息,接收来自客户端的请求,并回复包含所请求遥测信息的 JSON 响应。
  • etc.

Telemetry Library

参考:

在 Telemetry Library 相关代码 telemetry_v2_init 进行初始化,注册了几个基本的命令(/, /info, /help)。其他注册的命令则需要到各种 Libraries 的代码中查看。可以通过搜索 init_telemetry 关键字找到各种 Library 注册到 Telemetry 的命令,e.g. ethdev, mempool, etc.

简单示例如下:

~]# dpdk-telemetry.py 
Connecting to /var/run/dpdk/rte/dpdk_telemetry.v2
{
  "version": "DPDK 23.11.0",
  "pid": 4054033,
  "max_output_len": 16384
}
Connected to application: "usps"
--> /ethdev/list
{
  "/ethdev/list": [
    0,
    1
  ]
}
--> /ethdev/stats,0
{
  "/ethdev/stats": {
    "ipackets": 0,
    "opackets": 0,
    "ibytes": 0,
    "obytes": 0,
    "imissed": 0,
    "ierrors": 0,
    "oerrors": 0,
    "rx_nombuf": 0,
    "q_ipackets": [
      0,
......

Tips: 在个人的学习项目中使用 Go 语言通过使用 unixpacket 与 Socket 文件建立连接后,也可以实现 dpdk-telemetry.py 的效果

从 DPDK 的 API 也可以查看一些,各种命令返回信息的含义

TODO: 还有没有其它官方文档来代替 API 文档或者源码中来了解各种命令返回的信息?

TODO: 根据 https://github.com/search?q=repo%3ADPDK%2Fdpdk%20init_telemetry&type=code 总结一下都有哪些库注册了 Telemetry

cnxk_mempool_init_telemetry

cnxk_ethdev_init_telemetry

ring_init_telemetry

librawdev_init_telemetry

dmadev_init_telemetry

security_init_telemetry

mempool_init_telemetry

eventdev_init_telemetry

cryptodev_init_telemetry

cnxk_ipsec_init_telemetry

ta_init_telemetry

ethdev_init_telemetry

rxa_init_telemetry


最后修改 October 25, 2025: dpdk (14415cde)