转载请注明出处:小锋学长生活大爆炸 [xfxuezhagn.cn]
如果本文帮助到了你,欢迎[点赞、收藏、关注 ]哦~
目录
lstopo硬件拓扑
补充知识
HostBridge和PCIBridge
HostBridge和PCIBridge的损耗
PCIe 不同版本的带宽
PCIe 版本与编码开销
GT/s跟GB/s的联系
如果要安装的话:
sudo apt install hwloc hwloc-gui -y
然后:
lstopo -v
lstopo硬件拓扑 图中的带宽是单向总带宽了,不是单通道带宽。
有一点需要特别注意:由于NVIDIA驱动会自动管理GPU参数 ,因此在空闲状态下,你看到的GPU对应的PCIe带宽是4GB/s。但实际上,当你在跑代码时候,驱动会自动把带宽拉上来,比如我下面这个图中,带宽就拉到了最高16GB/s。所以不要被迷惑了:
同理,其他比如Perf参数,默认情况下也是P8,当有任务在运行时会自动切换到P2.
补充知识 以下内容来自GPT,仅供参考。
HostBridge和PCIBridge 在计算机硬件中,HostBridge 和 PCIBridge 是用于连接和管理不同类型硬件设备的关键组件。以下是它们的详细解释:
HostBridge(主桥)
HostBridge,也称为主桥,是连接CPU与PCI总线的桥梁。它的主要功能是将处理器与PCI总线上的设备(例如显卡、网卡、存储设备等)连接起来。HostBridge负责处理CPU与PCI设备之间的数据传输,并管理内存控制和I/O请求。
PCIBridge(PCI桥)
PCIBridge,也称为PCI桥,是用于扩展PCI总线的桥接器。它允许连接多个PCI设备,并且可以将数据在不同的PCI设备之间传输。PCIBridge主要用于扩展系统的PCI总线,以便连接更多的PCI设备。PCI桥可以是传统的PCI桥(用于标准PCI设备)或PCIe桥(用于PCI Express设备)。
HostBridge和PCIBridge的损耗 HostBridge和PCIBridge的损耗取决于多个因素,包括硬件架构、连接速度、传输数据类型等。一般来说,这种损耗包括延迟(latency)和带宽(bandwidth)限制。以下是一些常见的损耗类型及其影响因素:
HostBridge和PCIBridge的延迟
HostBridge延迟 :HostBridge通常负责将CPU、内存和I/O设备连接在一起,它的延迟主要由系统总线速度和控制逻辑的复杂性决定。现代系统中,HostBridge的延迟一般在几十到几百纳秒之间。PCIBridge延迟 :PCIBridge用于将多个PCI设备连接到同一个PCI总线上。它的延迟主要由桥接芯片的设计和连接速度(如PCIe代数)决定。PCIe 3.0及以上版本的单跳延迟通常在几百纳秒到一微秒之间。HostBridge和PCIBridge的带宽
HostBridge带宽 :HostBridge的带宽取决于系统总线(如QPI、UPI)的带宽。现代高性能系统的总线带宽可以达到几十GB/s。PCIBridge带宽 :PCIBridge的带宽取决于PCIe版本和通道数。例如,PCIe 3.0 x16的理论最大带宽约为16GB/s,而PCIe 4.0 x16的理论最大带宽约为32GB/s。实际影响因素
PCIe版本 :不同版本的PCIe(如PCIe 3.0、4.0、5.0)具有不同的带宽和延迟特性。较新的版本通常提供更高的带宽和更低的延迟。通道数 :PCIe通道数(如x1、x4、x8、x16)直接影响总带宽。更多的通道数意味着更高的带宽。设备类型 :不同类型的设备(如存储、网络、GPU)对带宽和延迟的要求不同。例如,GPU和高速存储设备通常需要更高的带宽和更低的延迟。系统负载 :系统负载和并发访问情况也会影响实际的延迟和带宽。例如,多设备并发访问同一个桥接器时,可能会出现带宽竞争和延迟增加。具体数值示例
延迟 :现代系统中,HostBridge和PCIBridge的单跳延迟通常在几十到几百纳秒之间。PCIe 4.0的延迟通常比PCIe 3.0低。带宽 :PCIe 3.0 x16的最大理论带宽为16GB/s,PCIe 4.0 x16为32GB/s,PCIe 5.0 x16为64GB/s。PCIe 不同版本的带宽 PCIe 版本与编码开销 对于PCIe带宽,确实可能会看到一些小数点后的差异,这主要是由于数据传输的编码开销等因素导致的。
在PCIe 1.0和2.0中,数据传输使用8b/10b编码,这意味着每传输10位数据中有2位用于编码开销。因此,实际有效的数据传输速率会稍微低于理论上的最大带宽。
从PCIe 3.0开始,数据传输改用128b/130b编码,这意味着每传输130位数据中有2位用于编码开销,编码效率提高,实际有效带宽更接近理论带宽。
具体计算示例:
PCIe 1.0和2.0
每通道带宽:2.5 GT/s(每秒2.5 GigaTransfers) 8b/10b编码后实际带宽:2.5 * 0.8 = 2.0 Gbps(每秒2.0 GigaBits) 转换为字节:2.0 Gbps / 8 = 0.25 GB/s(每通道) x16通道:0.25 * 16 = 4 GB/s(单向) PCIe 3.0
每通道带宽:8 GT/s 128b/130b编码后实际带宽:8 * (128/130) = 7.877 Gbps 转换为字节:7.877 Gbps / 8 = 0.985 GB/s(每通道) x16通道:0.985 * 16 = 15.75 GB/s(单向) PCIe 4.0
每通道带宽:16 GT/s 128b/130b编码后实际带宽:16 * (128/130) = 15.754 Gbps 转换为字节:15.754 Gbps / 8 = 1.969 GB/s(每通道) x16通道:1.969 * 16 = 31.51 GB/s(单向) PCIe 5.0
每通道带宽:32 GT/s 128b/130b编码后实际带宽:32 * (128/130) = 31.508 Gbps 转换为字节:31.508 Gbps / 8 = 3.938 GB/s(每通道) x16通道:3.938 * 16 = 63.02 GB/s(单向) GT/s跟GB/s的联系 GT/s(GigaTransfers per second)和GB/s(GigaBytes per second)是衡量PCIe(Peripheral Component Interconnect Express)接口带宽的两个不同单位。GT/s表示每秒的传输次数,而GB/s表示每秒传输的数据量。为了将GT/s转换为GB/s,需要考虑编码开销和数据位宽。
转换关系
数据传输速率 :PCIe传输速率以GT/s为单位,表示每秒传输的次数(或符号率)。
编码开销 :PCIe不同版本采用不同的编码方式,影响有效带宽。
PCIe 1.0和2.0采用8b/10b编码,每10位中有2位用于开销,有效带宽为理论带宽的80%。 PCIe 3.0及以后采用128b/130b编码,每130位中有2位用于开销,有效带宽为理论带宽的98.46%。 数据位宽 :1 Byte = 8 bits,转换时需要将比特速率(Gbps)转换为字节速率(GB/s)。
转换步骤
计算每通道的有效传输速率(Gbps)。 将Gbps转换为GB/s。 具体计算
以下是不同版本PCIe每通道(lane)的单向带宽计算:
PCIe 1.0和2.0
每通道:2.5 GT/s 8b/10b编码有效带宽:2.5 GT/s * 0.8 = 2.0 Gbps 转换为GB/s:2.0 Gbps / 8 = 0.25 GB/s PCIe 3.0
每通道:8 GT/s 128b/130b编码有效带宽:8 GT/s * (128/130) = 7.877 Gbps 转换为GB/s:7.877 Gbps / 8 = 0.985 GB/s PCIe 4.0
每通道:16 GT/s 128b/130b编码有效带宽:16 GT/s * (128/130) = 15.754 Gbps 转换为GB/s:15.754 Gbps / 8 = 1.969 GB/s PCIe 5.0 每通道:32 GT/s 128b/130b编码有效带宽:32 GT/s * (128/130) = 31.508 Gbps 转换为GB/s:31.508 Gbps / 8 = 3.938 GB/s