Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 在struct sk_buff中添加新成员-对性能有影响吗?_Performance_Linux Kernel_Linux Device Driver_Embedded Linux - Fatal编程技术网

Performance 在struct sk_buff中添加新成员-对性能有影响吗?

Performance 在struct sk_buff中添加新成员-对性能有影响吗?,performance,linux-kernel,linux-device-driver,embedded-linux,Performance,Linux Kernel,Linux Device Driver,Embedded Linux,我需要在sk_buff结构中添加一个小缓冲区,并希望将其作为单独的成员添加,或者将其添加到默认的skb->cb之上 大小大约为100字节。在这里,关注的是“性能”。它是否会对数据包处理造成性能影响?特别是,缓存对齐,因为这种大小的sk_buff不能加载到单个缓存线中,这会导致问题吗 我做了一个实验,在sk_buff中只添加了4个字节,并注意到在常规UDP测试中性能下降了30-50MBps 有什么建议吗?是的,它会对性能产生影响 除了数据结构对齐可能存在的问题外,主要问题还来自更高的内存扩散和/或

我需要在
sk_buff
结构中添加一个小缓冲区,并希望将其作为单独的成员添加,或者将其添加到默认的
skb->cb
之上

大小大约为100字节。在这里,关注的是“性能”。它是否会对数据包处理造成性能影响?特别是,缓存对齐,因为这种大小的
sk_buff
不能加载到单个缓存线中,这会导致问题吗

我做了一个实验,在
sk_buff
中只添加了4个字节,并注意到在常规UDP测试中性能下降了30-50MBps


有什么建议吗?

是的,它会对性能产生影响

除了数据结构对齐可能存在的问题外,主要问题还来自更高的内存扩散和/或更大的内存带宽使用。事实上,如果缓冲区没有被完全使用,它将充当一个大的填充。这种填充会降低性能,因为缓存线可能会被浪费,或者结构项不会从主内存连续加载(这种情况下,只需读取少量字段即可遍历数据结构的许多项)。否则,如果缓冲区完全读取/可用,则需要从内存层次结构(CPU缓存和RAM)加载更多数据,而内存层次结构不是空闲的


我建议您将一个(小的)引用(例如数组单元格偏移量、指针)放到这个关键的
skb_buff
数据结构中的缓冲区,并将这个缓冲区移动到另一个单独的数据结构中。这样做的好处是可以打包缓冲区,并且可以显著减少内存扩散的影响(如果不经常使用添加的缓冲区)。但是,这种方法的缺点是额外的间接/访问,并且需要以一致的方式管理单独的缓冲区。

,这将对性能产生影响

除了数据结构对齐可能存在的问题外,主要问题还来自更高的内存扩散和/或更大的内存带宽使用。事实上,如果缓冲区没有被完全使用,它将充当一个大的填充。这种填充会降低性能,因为缓存线可能会被浪费,或者结构项不会从主内存连续加载(这种情况下,只需读取少量字段即可遍历数据结构的许多项)。否则,如果缓冲区完全读取/可用,则需要从内存层次结构(CPU缓存和RAM)加载更多数据,而内存层次结构不是空闲的


我建议您将一个(小的)引用(例如数组单元格偏移量、指针)放到这个关键的
skb_buff
数据结构中的缓冲区,并将这个缓冲区移动到另一个单独的数据结构中。这样做的好处是可以打包缓冲区,并且可以显著减少内存扩散的影响(如果不经常使用添加的缓冲区)。但是,这种方法的缺点是额外的间接/访问,并且需要以一致的方式管理单独的缓冲区。

是的,当然会影响。经过多年的努力,这一结构得到了优化。主要问题是什么?你到底想做什么?有一个
cb
特殊的缓冲区,可以用于您自己的目的。是的,它当然会影响。经过多年的努力,这一结构得到了优化。主要问题是什么?你到底想做什么?有一个
cb
特殊缓冲区,可用于您自己的目的。