Linux系统里,想查清楚CPU的型号、核心数、架构这些信息,懂的人用几个命令就能搞定,不懂的人可能翻半天目录也没找到。其实Linux提供了好几套工具,从最简单的文本查看到最详细的硬件检测,每一种都能让你搞清楚手上的CPU到底是什么版本。

用cat命令直接读取CPU信息

最直接的办法就是查看系统里的一个特殊文件。在Linux的/proc目录下,藏着大量系统运行时的实时信息linux删除命令,其中cpuinfo这个文件记录了CPU的全部细节。你只需要在终端里输入cat /proc/cpuinfo,屏幕上就会刷出一大段信息。

每个逻辑CPU都会显示一个完整的段落,包括处理器编号、vendor_id(厂商)、model name(型号名称)、cpu MHz(主频)、cache size(缓存大小)等等。如果你只看型号,直接在model name那一行就能看到,比如“Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz”。这个信息是直接从CPU硬件寄存器里读出来的,准确率很高。

但注意,如果你服务器是双路或者四路CPU,这个文件会显示多个逻辑处理器,每个物理核心加上超线程都会出现一次。想只看到物理CPU的数量和型号,可以用cat /proc/cpuinfo | grep "physical id" | sort | uniq来统计物理插槽数,再用cat /proc/cpuinfo | grep "model name" | uniq只看型号,避免重复输出。

lscpu命令查看整体架构信息

查询版本信息_linux 查询cpu版本_查询版本命令

如果你觉得cat命令输出的内容太杂乱,lscpu命令就是专门为人类阅读习惯设计的。直接输入lscpu,终端会以整齐的表格形式列出CPU的架构信息,包括Architecture(架构)、CPU op-mode(s)(运行模式)、Byte Order(字节序)、CPU(s)(总逻辑核数)、On-line CPU(s) list(在线CPU列表)、Model name(型号名称)等。

这个命令最大的好处是帮你把多核、超线程、NUMA节点这些复杂信息汇总成一句话。比如它会直接告诉你“Thread(s) per core: 2”,意味着每个核心开了两个线程;“Core(s) per socket: 8”说明每个物理插槽上有8个核心;“Socket(s): 2”表示有两个物理CPU。这样你一眼就能算出这台机器是双路16核32线程的配置。

lscpu命令在大部分Linux发行版里都预装了,属于util-linux包的一部分。如果你遇到提示找不到命令,用yum install util-linux或者apt-get install util-linux装一下就行,不是什么大问题。

查询版本命令_linux 查询cpu版本_查询版本信息

dmidecode命令查看硬件原始信息

有些时候,单纯靠系统读取的CPU信息可能不够完整,比如你想知道CPU的额定频率、TDP(热设计功耗)、甚至是序列号,这些信息在cpuinfo里是没有的。这时候就需要请出dmidecode这个底层工具了。

运行dmidecode -t processor,会直接从主板BIOS的DMI表中读取CPU的原始硬件数据。这里能看到的字段比cpuinfo丰富得多,包括Socket Designation(插槽名称)、Type(类型)、Family(家族)、Manufacturer(制造商)、Version(版本号)、Voltage(电压)、External Clock(外频)、Max Speed(最大频率)、Current Speed(当前频率)、Status(状态)等等。

查询版本命令_linux 查询cpu版本_查询版本信息

比如说,你看到Max Speed: 3100 MHz,而Current Speed: 2100 MHz,说明这块CPU因为散热或者电源策略限制,被降频运行了。这些信息在做服务器故障排查或者性能调优的时候特别有用。不过dmidecode需要root权限才能执行,普通用户是看不到这些硬件详情的。

如果你想知道CPU是第几代的,看Version字段里的信息最准确,比如“Intel(R) Xeon(R) Gold 5218”本身就代表是二代至强可扩展处理器。配合Family字段里的“6”代表编号,你可以查到更详细的微架构代号。

查看CPU支持的指令集版本

很多搞研发或者运维的人,查CPU版本不只是想知道型号linux 查询cpu版本,更关心它支持哪些指令集。因为有些软件或者虚拟化技术,对CPU的指令集版本有硬性要求linux 查询cpu版本,比如AVX2、AVX-512、SSE4.2这些。

查询版本信息_linux 查询cpu版本_查询版本命令

lscpu命令的Flags一栏,或者通过cat /proc/cpuinfo | grep flags | head -1linux软件下载,就能看到CPU支持的所有指令集标识。这些标识符看着像一堆缩写字母,比如avx2、avx512f、sse4_1、sse4_2、aes、sha_ni等等。如果你看到lm这个标识,代表CPU支持64位模式;看到vmx或者svm,代表硬件虚拟化已经开启。

对于搞容器或者KVM虚拟化的人来说,知道CPU支持哪些指令集,直接决定了你能不能在这台机器上运行某些高性能计算任务。有时候你买来一台二手服务器,用这个命令一查,发现它连AVX2都不支持,那跑深度学习模型基本就别想了。

搞清楚Linux下CPU的版本信息,其实就这么几条路:用cat/proc/cpuinfo看基础信息,用lscpu看架构汇总,用dmidecode挖底层数据,再用flags确认指令集。每一步都有它不可替代的价值。下次在服务器上干活,随便挑一个敲进去,你就能清楚知道这台机器肚子里装的是什么级别的CPU了。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复