lstopo
是一个很不错的工具,可以生成直观、简洁的设备结构图。本文记录一些我在使用的时候遇到的一些小问题,所以本文不是一个完备的文档手册,如果你需要知道各类选选项,还请自行查阅文档:lstopo(1) - Linux man page 。
这里其实叫计算机拓扑结构,
lstopo
名字里的“topo”就是“拓扑”的意思。
安装
很多 Linux 发行版自带 hwloc,如果你的系统不知道为什么没有,比如在 Ubuntu 上,可以使用下面命令进行安装:
sudo apt install hwloc
lstopo
是负责以直观的方式展示hwloc
发现的拓扑图。
或者请自行到 Portable Hardware Locality (hwloc) 安装。需要注意是在“Sub-Projects”部分下载,如下图红框标注:
打印在命令行里
例如在命令行中,只需要下面这样一行简单的命令就在命令行中以很不错的样式打印出设备结构:
lstopo --of ascii -p
其中:
--of ascii
表示输出内容是 ascii,这表示使用 ascii art。这种风格你可能见过,就是用字符形成一幅画,例如下面就是 ascii art 的一个门:
-p
表示打印物理序号(就是P#
,-l
就是打印序号为L#
)。
可以看到在终端中打印了下面的内容:
可以看到展示了 CPU 的三级缓存以及一个核心内的处理单元,还有 PCI 设备。
生成图片等格式
除此之外,lstopo
还可以生成 PNG、JPG、SVG、PDF、XML 等格式。
这里以 SVG 格式为例:
生成这样的 SVG 图片命令很简单:
env LANG=zh_CN.UTF-8 lstopo --output-format svg > 1.svg
--output-format
是前面--of
的全称。
需要注意这里的env LANG=zh_CN.UTF-8
是因为生成的图片里有中文,不然有可能会是个“口”,如下:
这里还需要说明一点,虽然你可以直接使用下面这样简洁的命令来生成图片:
env LANG=zh_CN.UTF-8 lstopo 1.svg
但是这样如果这个图片已经有了,就需要加上-f
选项强制覆盖已经存在的图片,也就是:
env LANG=zh_CN.UTF-8 lstopo 1.svg -f
如果你想生成其他格式的,那么直接把svg
换成你想要的,比如 XML:
env LANG=zh_CN.UTF-8 lstopo 1.xml
再比如 PNG:
env LANG=zh_CN.UTF-8 lstopo 1.png -f
具体支持的还请看看文档 lstopo(1) - Linux man page 的“OUTPUT FORMATS”部分。
为什么我前面还要那么写呢?因为很多文档里都用的那种方法,我不知道是历史遗留问题还是什么原因,但是我喜欢记录多种情况,因为都管用,万一特殊情况用到了呢。
生成图片注意事项:PNG 和 JPG 较为模糊
一般常用的格式是 PNG 和 JPG,比如我写这篇博客的时候就需要上传这些格式的图片。但是这两个格式太糊了,其他的都是清楚的。
例如 PNG,你可以看到下面的很糊(并不是压缩原因),当然你放很小那么没什么问题的:
要解决这个问题,那么你需要调整字体大小以及一系列格式,这样就清楚了,因为字体越大越清楚,但是排版就不好看了。
这时候就多走一步吧,转换成 PDF 格式,然后再转图片:
这时候图片就是清楚的:
不选 SVG 作为中间格式是因为 Mac 上转 SVG 不知道为什么是空的:
当然你可以使用第三方工具,但是我想尽量用自带的。
希望能帮到有需要的人~
参考/扩展资料
ASCII Art Archive:这是一个档案馆,里面记录了一些 ASCII Art 风格的作品。当然你在一些抖音之类的评论区也偶尔会看到这种风格的作品。还有一种和这个类似的风格叫做 CACA Format,后面会写一篇关于这个的博客。
需要注意,我在找 SVG 转 PNG 的工具的时候,发现苹果自带一个工具叫qlmanage
,这个工具是用来生成缩略图的,但是这货是方的,也就是会裁掉一部分图片。
lstopo(1) - Linux man page:lstopo
的手册,最后有些例子可以看看学习一下。
Hwloc tutorial:这个是官方的一个教程,不光包括lstopo
的使用,还有一些库的使用和高级使用方法,可以理解成进阶学习。
Validate PCI Switch System Topology - NVIDIA Docs:英伟达的一个关于验证 PCI 交换机系统拓扑文档,简单介绍了如何安装和使用 lstopo
。