X86 IB读、IB写、OB读和OB写的含义是什么。它们作为Intel®PCM的输出,同时监控PCIe带宽

X86 IB读、IB写、OB读和OB写的含义是什么。它们作为Intel®PCM的输出,同时监控PCIe带宽,x86,performance-testing,intel,intel-pmu,mellanox,X86,Performance Testing,Intel,Intel Pmu,Mellanox,我正在尝试使用英特尔性能计数器监视器PCM工具测量NIC设备的PCIe带宽。但是,我无法理解它的输出 为了测量PCIe带宽,我执行了二进制pcm iio。此二进制文件有助于测量每个PCIe设备的监视器PCIe带宽。在执行二进制文件之后,我得到了以下输出 |IIO Stack 2 - PCIe1 |IB write|IB read|OB read|OB write|TLB Miss|VT-d L3 Miss|VT-d CTXT Miss|VT-d Lookup| |______

我正在尝试使用英特尔性能计数器监视器PCM工具测量NIC设备的PCIe带宽。但是,我无法理解它的输出

为了测量PCIe带宽,我执行了二进制pcm iio。此二进制文件有助于测量每个PCIe设备的监视器PCIe带宽。在执行二进制文件之后,我得到了以下输出


|IIO Stack 2 - PCIe1          |IB write|IB read|OB read|OB write|TLB Miss|VT-d L3 Miss|VT-d CTXT Miss|VT-d Lookup|
|_____________________________|________|_______|_______|________|________|____________|______________|___________|
| Part0 (1st x16/x8/x4)       |4498 M  |9003 M |   0   |3256 K  |   0    |   0        |   0          |   0       |
| Part1 (2nd x4)              |   0    |   0   |   0   |   0    |
| Part2 (2nd x8/3rd x4)       |   0    |   0   |   0   |   0    |
| Part3 (4th x4)              |   0    |   0   |   0   |   0    |
|_____________________________|________|_______|_______|________|________|____________|______________|___________|
我想了解IB read、IB write、OB read和OB write的含义。

IB write,是入站写入的缩写,是第一列中指定的PCIe设备请求通过DMA写入主内存的字节数。 IB read是PCIe设备通过DMA“直接内存访问”请求从主内存读取的字节数。无论是读请求还是写请求,都是设备向设备所连接的IIO堆栈的套接字发出请求。因此,从套接字的角度来看,这是入站流量

这些度量是使用CPU uncore事件的数据REQ来测量的。特别是,具有umask 0x1的事件表示4字节入站写入请求,而具有umask 0x4的事件表示4字节入站读取请求

OB write(outbound write的缩写)是处理器套接字通过MMIOMemory映射的I/O请求写入PCIe设备的字节数。OB read是处理器套接字通过MMIO请求从PCIe设备读取的字节数

这些度量与入站度量类似,不同之处在于使用了DATA_REQ_BY_CPU uncore事件

在旧版本的pcm iio中,使用了IB和OB的完整形式


值得注意的是,CPU的数据REQ并不测量内存带宽,而是测量连接到每个IIO堆栈的每个设备的I/O带宽。

当你说套接字的透视图是一个程序吗?我听说过socket编程,但我想知道socket是否有一个物理/硬件组件,我可以可视化以帮助理解。例如,有一天我意识到寄存器只是芯片上的一组引脚,我的脑子都被炸了!插槽的概念是否与此类似?@InstructionPointer我指的是CPU插槽。@InstructionPointer寄存器不是芯片上的管脚;它们是芯片内部的内存部件。@InstructionPointer每个寄存器都有导线,以便访问其内容。IIO堆栈是一个片上单元,用于将PCIe总线连接到片上互连,即Intel Xeon SP中的网格。因此,该PCIe总线的所有入站和出站流量都通过IIO堆栈。我在回答中提到的性能事件保存在IIO堆栈中。@InstructionPointer是的,这是内存技术寄存器的类型。