悠悠楠杉
Linux查看物理CPU个数、核数、逻辑CPU个数,以及内存,查看linux物理cpu的个数
一、为什么要了解硬件信息?
在日常服务器运维和性能调优过程中,准确获取硬件配置是基础中的基础。上周我们团队就遇到一个典型案例:某Java应用在16核服务器上频繁出现线程阻塞,最终发现是因为误将线程池数量设置为逻辑CPU数(32)而非物理核心数(16)。这类问题完全可以通过正确查看硬件信息来避免。
二、CPU信息查看的三大维度
1. 物理CPU数量(Physical CPU)
指主板上实际安装的CPU芯片数量,现代服务器通常支持多路CPU。查看方法:
bash
grep "physical id" /proc/cpuinfo | sort -u | wc -l
原理分析:
每个物理CPU在/proc/cpuinfo
中都有唯一的physical id编号,通过统计不同编号的数量即可得到物理CPU数。注意虚拟机环境中可能显示为1。
2. 单CPU核心数(Cores per CPU)
单个物理CPU包含的计算核心数量:
bash
lscpu | grep "Core(s) per socket" | awk '{print $NF}'
进阶技巧:
使用dmidecode -t processor
可获取更详细的CPU型号和核心信息,但需要root权限。
3. 逻辑CPU总数(Logical CPUs)
通过超线程技术模拟出的处理器数量:
bash
nproc --all # 最简方法
或
grep -c "processor" /proc/cpuinfo
性能影响:
逻辑CPU不等于真实计算能力。在密集型计算场景中,建议按照物理核心数来配置工作线程。
三、内存信息精准获取
1. 基础查看命令
bash
free -h # 人类可读格式
输出示例:
total used free shared buff/cache available
Mem: 62G 5.2G 800M 1.3G 56G 55G
Swap: 8.0G 512M 7.5G
2. 深度解析(单位:KB)
bash
cat /proc/meminfo | grep -E "MemTotal|MemFree|Buffers|Cached"
关键指标说明:
- Buffers:块设备读写缓存
- Cached:文件系统缓存(这部分内存会被自动回收)
3. 插槽信息排查(适用于物理服务器)
bash
dmidecode -t memory | grep -A16 "Memory Device$"
可查看每个内存插槽的:
- 容量大小
- 类型(DDR4/DDR5)
- 运行频率
- 生产厂商
四、专业工具横向对比
| 工具/文件 | 优势 | 局限性 |
|----------------|--------------------------|-------------------------|
| /proc/cpuinfo
| 无需安装,信息最原始 | 需要自行解析关键字段 |
| lscpu
| 信息结构化,直观易读 | 部分旧系统可能未预装 |
| dmidecode
| 获取硬件厂商详细信息 | 需要root权限 |
| nproc
| 快速获取逻辑CPU数 | 无法区分物理/逻辑核心 |
五、实战应用场景
案例1:K8s节点资源分配
在配置Kubernetes的resources.requests时,必须准确知道节点物理核心数。某次误将requests.cpu设为逻辑CPU数,导致节点资源过载。
案例2:MySQL参数优化
innodbbufferpool_size应该根据实际可用内存调整,通过free -m
查看时要注意扣除系统保留内存。
六、常见误区警示
- 虚拟机环境差异:云服务器的vCPU通常对应逻辑CPU,物理核心数可能不透明
- 容器内读取异常:在未正确挂载/proc的容器中,nproc可能返回宿主机核心数
- NUMA架构影响:多CPU服务器需注意内存访问的本地性(可通过
numactl --hardware
查看)
掌握了这些知识后,下次当你登录一台陌生服务器时,30秒内就能摸清它的"家底"。这不仅仅是命令的堆砌,更是理解系统资源调度的第一步。