DPDK转发测试时出现大量“dTLB-load-miss”

问题描述 投票:2回答:1

最近我试图用DPDK“testpmd”应用程序进行一些转发测试。我发现了一些有趣的东西。

当512个描述符用于TX和RX时,性能优于使用4096个描述符。用“perf”命令检查计数器后,我发现观察到大量“dTLB-load-miss”。它使用512个描述符大约是100倍。但页面错误始终为零。使用“:u”和“:k”参数,似乎大多数TLB未命中都在用户空间中。所有缓冲区都在一个巨大的页面中,用于存储网络有效负载的数据,而巨大的页面大小为512MB。每个缓冲区小于3KB。缓冲区和描述符是一对一的映射。

那么有什么线索我能找到大量的TLB未命中吗?它会对性能产生一些影响吗?(退化)

谢谢

arm tlb dpdk
1个回答
3
投票

通常,CPU TLB缓存容量取决于页面大小。这意味着对于4KB页面和512MB页面,可能存在不同数量的L1 / L2 TLB高速缓存条目。

例如,对于ARM Cortex-A75:

数据微TLB是48条完全关联的TLB,由加载和存储操作使用。缓存条目仅具有4KB,16KB,64KB和1MB粒度的VA到PA映射。

资料来源:ARM Info Center

对于ARM Cortex-A55:

Cortex-A55 L1数据TLB仅支持4KB页面。在L2 TLB和发送到L1 TLB的适当页面大小之后,任何其他页面大小都会断开。

资料来源:ARM Info Center

基本上,这意味着512MB的巨大页面映射将被破解为更小的尺寸(低至4K),并且只有那些小块将被缓存在L1 dTLB中。

因此,即使您的应用程序适合单个512MB页面,性能仍将在很大程度上取决于实际内存占用量。

© www.soinside.com 2019 - 2024. All rights reserved.