摘要: DPDK 通常将每个 pthread(线程)绑定到一个 CPU 核心上,以避免任务切换带来的开销。 这种方式能显著提升性能,但缺乏灵活性,且在某些情况下效率并不高。 电源管理功能可以通过限制 CPU 的运行频率来提升能效。然而,作为替代方案,也可以利用 CPU 空闲周期,进一步发挥其全部性能。 借助 阅读全文
posted @ 2025-04-04 16:38 Tohomson 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 内存池是什么? 内存池是一种提前申请好一块大内存,再从中按需划分固定/可变大小的内存块进行复用的技术。 内存的申请和释放操作不再频繁调用 malloc/free 或 new/delete,而是从池中“取”或“还”。 使用内存池的原因: 减少系统调用开销,提高性能; 系统的malloc/free需要陷 阅读全文
posted @ 2025-04-02 19:33 Tohomson 阅读(5) 评论(0) 推荐(0) 编辑
摘要: EAL是什么 EAL:Environment Abstraction Layer,环境抽象层。EAL 是 DPDK 最核心的基础模块之一,它负责整个运行环境的初始化,包括 CPU、内存、设备的配置与绑定。通过提供统一的抽象接口,EAL 隐藏了操作系统与硬件的复杂性,为上层应用程序提供了一个干净、可移 阅读全文
posted @ 2025-04-02 17:26 Tohomson 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 内存管理 - 4. 多进程支持 DPDK 的设计目标是提升网络数据包的处理性能。多进程支持使得多个 DPDK 进程能够协作执行任务,从而提高并行处理能力,减少资源竞争,并且能够处理更大规模的网络流量。DPDK有两种不同的进程类型,一种是主进程,一种是从进程; 主进程可以进行初始化,对内存有完全的权限 阅读全文
posted @ 2025-04-01 19:23 Tohomson 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 常见的池式结构:线程池、连接池、内存池、对象池、协程池、线程池 常见的“池式结构” 池类型 描述 应用场景 线程池(Thread Pool) 复用固定数量的线程来处理大量任务 并发服务器、任务调度系统 连接池(Connection Pool) 复用数据库连接、HTTP连接等资源 Web服务访问数据库 阅读全文
posted @ 2025-04-01 11:16 Tohomson 阅读(16) 评论(0) 推荐(0) 编辑
摘要: Packet(MBuf)库概述: 这个库提供了分配和释放缓冲区(mbuf)的能力,DPDK 应用可以使用这些缓冲区来存储各种类型的数据,比如: 网络数据包(最常见) 控制信息(control data) 事件(events) 或其他需要临时存储的数据 这些 mbuf 缓冲区的底层是通过 Mempoo 阅读全文
posted @ 2025-03-31 19:10 Tohomson 阅读(8) 评论(0) 推荐(0) 编辑
摘要: io_uring是什么 io_uring是2019年,Linux内核5.1引入的异步io接口,通过环形buffer将用户态和内核态连接起来,实现低时延、低开销、异步、高吞吐的IO接口。 Linux传统的io机制: ​ 最常用的epoll只能检测IO就绪,读写是阻塞的系统调用(recv、write、s 阅读全文
posted @ 2025-03-31 19:08 Tohomson 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在 DPDK 中,每个内存池通过一个名字进行标识,并通过一种称为 mempool handler 的机制来管理空闲对象。默认的 handler 是基于 环形队列(ring-based) 的实现。 内存池还提供一些可选功能,例如: 每核独立缓存(per-core object cache) 对象对齐工 阅读全文
posted @ 2025-03-30 10:15 Tohomson 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 在网络Linux网络编程中,会使用到的API有如下的几个: Server侧: socket、bind、listen、accept、recv、send、close、connect(可选)。 client侧: socket、bind、connect、send、recv、close。 socket函数 调 阅读全文
posted @ 2025-03-30 10:13 Tohomson 阅读(13) 评论(0) 推荐(0) 编辑
摘要: DPDK 官方文档阅读 - Lcore Variables 1、Lcore variable 是什么? 逻辑核变量是DPDK框架为每个核心分配的变量,这个变量代表着框架为一个逻辑核保存的可以自定义的变量,可以使用这个变量来访问这个变量所代表的核心的内容,访问这个变量需要逻辑核变量具柄,他是一个指向变 阅读全文
posted @ 2025-03-29 09:20 Tohomson 阅读(4) 评论(0) 推荐(0) 编辑