可提高性能的方式有:
- 减少数据拷贝;
- 使用缓存;
- 提高查表效率(减少总条目(如大页)、哈希、排序、数组、索引等等);
- 硬件 offload(把某些事交给硬件去做);
- “资源池”的使用(实际上是优化资源的分配环节);
- 减少没必要的等待。
等。
DPDK
1. 绕过内核(Kernel bypass)
- 少了内核处理环节,便于减少数据的拷贝;
- 可使用更轻量级的协议栈。
2. 轮询收包,而不是中断
中断会强行打断 cpu 当前正在执行的任务。任务被中断然后再恢复,可能会导致重新加载 CPU 缓存,从而影响效率。另外轮询可以每次批量处理多个包,但中断可能每个包都会触发难以优化收包次数。
3. 大页
使用大页可以提高 TLB 的查询效率,也就提高了地址翻译的效率。
4. “零拷贝”理念
在许多数据处理环节可以使用同一段 buffer,从而减少了数据拷贝。
5. dpdk ring
“无锁”队列。实际上是尽量减少资源独占的时间,减少没必要的等待。
SPDK
1. 运用了 DPDK 的技术和理念;
2. 抽象了存储单位;
3. 底层对接了各种存储方式;
4. 基于抽象出来的存储块,提供各种上层服务。
RDMA
1. 将可靠数据传输的协议栈交由网卡处理(硬件 offload)
2. 减少数据拷贝
与用户程序共用内存,减少数据拷贝。
Date: 2021-06-19 23:29
标签:中断,SPDK,RDMA,拷贝,减少,DPDK From: https://www.cnblogs.com/saigut/p/16990646.html