lscpu 和 lsmem 是 linux 下无需 root 权限即可运行的轻量级硬件信息工具:lscpu 提供 cpu 架构、拓扑、频率及 numa 信息;lsmem 展示内存块布局、在线/离线状态,适用于排查内存识别异常与热插拔场景。

lscpu 和 lsmem 是 Linux 下轻量、精准获取 CPU 与内存硬件信息的命令行工具,无需 root 权限即可运行,输出结构清晰,适合快速排查或脚本调用。
lscpu:查看 CPU 架构与拓扑细节
它从 /sys/devices/system/cpu/ 和 /proc/cpuinfo 提取数据,汇总为易读格式,比直接读 /proc/cpuinfo 更直观。
- 运行
lscpu可看到 CPU 型号、架构(x86_64 / aarch64)、核心数(CPU(s))、线程数(Thread(s) per core)、插槽数(Socket(s))、缓存层级(L1d/L1i/L2/L3)等关键字段 - 关注 CPU MHz(当前运行频率)和 CPU max MHz(支持的最高睿频),可辅助判断是否启用节能策略或频率限制
- 若显示 NUMA node(s) > 1,说明系统启用 NUMA;配合 NUMA node0 CPU(s) 等字段,可确认 CPU 与内存节点的绑定关系
lsmem:查看内存布局与块分配情况
该命令解析 /sys/devices/system/memory/ 下的 memory block 信息,反映内核如何组织物理内存(尤其对大内存或热插拔场景重要)。
- 输出包含 Memory block size(如 128M 或 2G)、Total online memory、Total offline memory,便于识别是否有内存被预留或未激活
- 若系统启用了内存热插拔(如云主机或虚拟化环境),
lsmem -a可列出每个 memory block 的起始地址、大小及在线状态 - 当
free -h显示总内存明显小于物理容量时,可先用lsmem查看 offline 内存占比,再结合dmesg | grep -i memory排查 BIOS 设置或内核启动参数(如mem=)限制
组合使用的小技巧
单条命令难以覆盖所有硬件上下文,搭配使用能快速定位常见问题:
- 查 CPU 是否超线程开启:
lscpu | grep -E "(Thread|Core|Socket)",若 Thread(s) per core = 2 且 CPU(s) = Core(s) × Socket(s) × 2,则已启用 - 验证内存是否全部识别:
lsmem | grep "Total online" && free -h | grep "Mem:",两者数值应基本一致(忽略少量内核保留) - 脚本中提取字段更可靠:
lscpu | awk -F': ' '/Model name/ {print $2}'或lsmem | awk '/Total online/ {print $4, $5}'
注意兼容性与替代方案
这两个命令属于 util-linux 软件包,主流发行版默认安装。若缺失,可执行 sudo apt install util-linux(Debian/Ubuntu)或 sudo yum install util-linux(RHEL/CentOS)。
- 旧内核(如 3.10 以下)可能不支持
lsmem,此时可用cat /proc/meminfo+ls /sys/devices/system/memory/手动推算 - 需要更底层寄存器信息(如微码版本、具体 CPUID 功能位),仍需依赖
cpuid或dmidecode(需 root) - 图形界面用户也可用
gnome-system-monitor或ksysguard查看概览,但实时性和字段完整性不如命令行工具










