可能影响数据包处理速度的内存问题
内存问题分类 | 问题描述 | 解决问题的思路和方案 |
Cache一致性的问题 | 如果2个数据结构属于同一个Cache Line,在2个核分别访问2个数据结构时,CPU将花费额外时间处理竞争和同步 | 使所有数据结构按照Cache Line对齐 |
假设数据结构是Cache Line 对齐的,但有多个核对该段内存进行读写,那么CPU将花费额外时间来处理Cache一致性问题 | 为每个核分配单独的内存段 | |
TLB miss 问题 | 如果采用常规大小的页(4KB),需要两级页表,不仅增加了寻址时间,大量的表项还容易引起 TLB MISS | 采用大页 |
内存读写速度问题 | CPU数据数据的过程中需要频繁访问内存。但相比CPU的运行速度,内存的响应速度要慢很多。 |
1. 采用DDIO技术,使网卡和CPU通过LLC Cache 交换数据; 2. 多通道内存并行访问; |
缓存的分配和释放消耗时间的问题 | 在收发数据包的过程中,需要频繁的分配/释放数据包缓存,如果每次都从“堆”中分配,消耗的时间较长。 | 提前从“堆”中申请一大块内存作为内存池,再从内存池中快速获取内存。 |