2

我正在尝试使用英特尔® 性能计数器监视器 (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读,IB写,OB读和OB写的含义。

4

1 回答 1

4

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

这些指标是使用DATA_REQ_OF_CPUuncore 事件测量的。特别是,umask 为 0x1 的事件表示 4 字节的入站写入请求,而 umask 为 0x4 的事件表示 4 字节的入站读取请求。

OB write,outbound write的缩写,是处理器socket通过MMIO("Memory-mapped I/O")请求写入PCIe设备的字节数。OB read是处理器套接字请求通过 MMIO 从 PCIe 设备读取的字节数。

这些指标的测量与入站指标类似,只是使用了非DATA_REQ_BY_CPU核心事件。

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

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

于 2019-07-21T17:18:39.740 回答