Linux系统信息采集_lscpu与lsmem使用

6次阅读

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

Linux系统信息采集_lscpu与lsmem使用

lscpulsmem 是 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 memoryTotal 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-linuxdebian/ubuntu)或 sudo yum install util-linux(RHEL/centos)。

  • 旧内核(如 3.10 以下)可能不支持 lsmem,此时可用 cat /proc/meminfo + ls /sys/devices/system/memory/ 手动推算
  • 需要更底层寄存器信息(如微码版本、具体 CPUID 功能位),仍需依赖 cpuiddmidecode(需 root)
  • 图形界面用户也可用 gnome-system-monitorksysguard 查看概览,但实时性和字段完整性不如命令行工具
text=ZqhQzanResources