首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >砂桥QPI带宽perf事件

砂桥QPI带宽perf事件
EN

Stack Overflow用户
提问于 2021-02-18 20:18:29
回答 1查看 154关注 0票数 3

我正在寻找合适的原始perf事件描述符来监视IntelXeonE5-2600 (Sandy )上的QPI流量(带宽)。

我发现了一个似乎相对这里的事件(qpi_data_bandwidth_tx:发送的数据数量)。来源于unc_q_txl_flits_g0.data。单位:uncore_qpi),但我不能在我的系统中使用它。因此,这些事件可能是指一种不同的微观架构。

此外,我还研究了"https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/xeon-e5-2600-uncore-guide.pdf“,我发现的最相关的参考如下:

代码语言:javascript
复制
To calculate "data" bandwidth, one should therefore do: 
data flits * 8B / time (for L0) 
or 4B instead of 8B for L0p

监视数据闪烁的事件是:

  1. RxL_FLITS_G0.DATA
  2. RxL_FLITS_G1.DRS_DATA
  3. RxL_FLITS_G2.NCB_DATA

Q1:这些是正确的事件吗?

Q2:如果是的话,我应该监视所有这些事件并添加它们以获得数据的总数,还是仅仅是第一个?

Q3:我不太明白8Btime指的是什么。

Q4:有什么方法来验证吗?

此外,请随时建议在监测QPI流量带宽的备选方案,以防有任何。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 22:04:11

一个XeonE5-2600处理器有两个QPI端口,每个端口最多可以发送一个flit,并且每个QPI域时钟周期最多接收一个flit。并不是所有的flits都携带数据,但是所有非空闲的flits都消耗带宽。在我看来,您感兴趣的是只计算数据flits,这对于在套接字级别(而不是套接字中的特定代理)检测远程访问带宽瓶颈非常有用。

事件RxL_FLITS_G0.DATA可用于计算接收到的数据闪烁数。这等于RxL_FLITS_G1.DRS_DATARxL_FLITS_G2.NCB_DATA之和。你只需要衡量后两个事件,如果你关心的崩溃。注意,每个QPI端口只有4个事件计数器。事件TxL_FLITS_G0.DATA可用于计算传输到其他套接字的数据闪烁数。

事件RxL_FLITS_G0.DATATxL_FLITS_G0.DATA可用于测量通过指定端口传输的flits总数。因此,在每个端口中可用的四个计数中,有两个可以计数总数据量。

没有准确的方法将数据flits转换为字节。flit可能包含最多8个有效字节。这取决于链路方向的事务类型和功率状态(每个方向的功率状态为每个链路)。通过合理地假设大多数数据flit是完整缓存线数据包的一部分并在L0功率状态下传输,可以得到一个很好的估计,因此每个flit确实包含8个有效字节。或者,您只需根据数据flits而不是字节来度量端口利用率。

时间的单位由你来决定。最终,如果要确定QPI带宽是否是瓶颈,则必须定期测量带宽,并与理论上的最大带宽进行比较。例如,您可以使用总QPI时钟周期,这可以计算在一个免费的QPI端口PMU计数器上。QPI频率固定在JKT上。

为了进行验证,您可以编写一个简单的程序,在远程内存中分配一个大缓冲区并读取它。所测量的字节数应该与缓冲区的大小(以字节为单位)大致相同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66267575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档