解释 lstopo 的输出

Tim*_*Tim 11 hardware architecture

我有一个lstopo --output-format txt -v --no-io > lstopo.txt集群中 8 核节点的输出,它是https://dl.dropboxusercontent.com/u/13029929/lstopo.txt

  1. 该文件是节点的文本图。它对于我笔记本电脑的 Ubuntu 上的终端和 gedit 来说太宽了,它的一些右侧被我的笔记本电脑移动到左侧并与绘图的左侧部分重叠。我想知道如何正确查看文件?(补充:我发现我可以通过上传到dropbox并在Firefox中打开来正确查看绘图,这可以正确缩小绘图。但是在Firefox中打开本地文件会错误显示虚线“-”,我不知道为什么? 除了火狐,还有什么软件可以运行吗?)

  2. 每个核心“Core P#”中的“PU P#”是什么意思?为什么他们的数字不一样?

  3. “L1i”是指L1指令缓存,“L1d”是L1数据缓存吗?

  4. 为什么L2和L3缓存没有指令缓存和数据缓存的区别?这对计算机来说很常见吗?

  5. “Socket P#”是什么意思?“套接字”是否用于连接 L3 缓存和主内存?

  6. “NUMANode P# (16GB)”是什么意思?是主存芯片吗?

  7. 图中是否有四个内核共享一个主存芯片,其他四个内核共享另一个主存芯片?

  8. 节点中的所有8个内核都没有共享一个主内存吗?那么节点是不是就像一个分布式系统,有两台四核计算机,它们之间没有共享内存?两个4核组怎么交流?

  9. “Machine (32GB)”是指6中提到的两个主存芯片的大小之和吗?

slm*_*slm 20

以下是您的问题的答案:

  1. 我将其视为图形图像而不是 ASCII 图像。

    $ lstopo --output-format png -v --no-io > cpu.png
    
    Run Code Online (Sandbox Code Playgroud)

    注意:您可以查看生成的文件 cpu.png

                         我的笔记本电脑的 ss

  2. “PU P#” = 处理单元处理器 #。这些是 CPU 内核中的处理元件。在我的笔记本电脑(英特尔 i5)上,我有 2 个内核,每个内核有 2 个处理元素,总共 4 个。但实际上我只有 2 个物理内核。

  3. L#i = 指令缓存,L#d = 数据缓存。L1 = 一级缓存。

  4. 在 Intel 架构中,当您从 L1 → L2 → L3 向下移动时,指令和数据会混合在一起。

  5. “Socket P#”是主板上有 2 个物理插槽,在这个设置中有 2 个物理上独立的 CPU。

  6. 在多 CPU 架构中,RAM 通常是分开的,以便将其中的一部分分配给每个内核。如果 CPU0 需要 CPU1 的 RAM 中的数据,则它需要通过 CPU1 来“请求”这些数据。这样做的原因有很多,这里就不一一详述了。如果您真的很好奇,请阅读NUMA 风格的内存架构

                                      ss of numa

  7. 该图显示了 2 个物理 CPU 包中的 4 个内核(每个内核有 1 个处理单元)。每个物理 CPU 都可以“隔离”访问 16?GB 的 RAM。

  8. 不,所有 CPU 之间没有共享内存。2 个 CPU 必须通过 CPU 与另一个的 RAM 进行交互。再次查看NUMA Wikipage 以了解有关非统一内存体系结构的更多信息

  9. 是的,系统总共有 32?GB 的 RAM。但是只有 1/2 的 RAM 可以被任一物理 CPU 直接访问。

什么是插座?

插槽是用于描述包含 CPU 的实际封装的术语,用于安装在主板上。有许多不同的样式和配置;查看关于CPU 套接字的维基百科页面。

             cpu 插槽的 ss

这张图片还说明了“核心”、CPU 和“插槽”之间的关系。

   关系ss


Sat*_*ish 5

您可以直接使用lstopo-no-graphics --no-io --no-legend --of txt命令在终端上获取图形视图

如果命令丢失,您可能需要安装yum install hwloc软件包。

在此输入图像描述