4、核心硬件检测:CPU、内存、硬盘、GPU

各位工程师,咱们直接进入正题。整机联调的第一步,就是把核心硬件挨个摸一遍。说白了,你得先确认你手里这台机器的「心脏」和「大脑」是不是对的。我见过太多返修案例,最后查出来是CPU型号不对板,或者内存频率没跑上去。嗯,这些坑咱们今天一次性填平。

核心检测四件套:

  • CPU:型号对不对?频率稳不稳?
  • 内存:容量够不够?频率跑满没?
  • 硬盘:型号匹配吗?健康状态还撑得住吗?
  • GPU:显存到位了没?核心频率正常吗?
核心硬件检测 CPU 型号确认 · 频率检测 内存 容量检测 · 频率验证 硬盘 型号匹配 · SMART健康 GPU 型号确认 · 显存检测

4.1 CPU型号与频率确认

我个人习惯,上电后第一件事就是进BIOS看一眼CPU信息。为什么?因为操作系统里看到的可能是虚拟化后的数据,BIOS最原始。

在Linux下,我常用这条命令:

cat /proc/cpuinfo | grep -E "model name|cpu MHz" | head -4

输出大概长这样:

model name      : Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz
cpu MHz         : 3000.000
cpu MHz         : 3000.000
cpu MHz         : 3000.000

这里要注意三点:

  • 型号要对:跟BOM表逐字核对,我遇到过「ES版」CPU混在正式出货机器里的情况。
  • 频率要稳:如果发现频率在波动,别慌。先看看是不是节能策略(比如Intel的SpeedStep)在起作用。
  • 核心数要够:用 nproc 或者 lscpu 确认一下逻辑核心数。

小技巧: 我习惯写个脚本,把/proc/cpuinfo里的信息跟BOM表做自动比对。人工核对太容易走神了,你想想看,几百台机器,眼睛不花才怪。

4.2 内存容量与频率检测

内存这块,我踩过最大的坑就是「频率没跑满」。明明插的是3200MHz的条子,结果系统只认了2133MHz。为什么会这样?多半是XMP没开,或者主板兼容性问题。

检测命令:

sudo dmidecode -t memory | grep -E "Size|Speed|Type"

输出示例:

Size: 16384 MB
Type: DDR4
Speed: 3200 MT/s
Configured Clock Speed: 3200 MT/s

重点关注两个字段:

  • Speed:内存条标称的最高频率
  • Configured Clock Speed:实际跑起来的频率

警告: 如果这两个值不一致,说明内存没跑在最佳状态。我曾经有一批机器,就是因为BIOS里XMP默认关闭,导致内存性能掉了15%。整机联调时一定要把这个坑填上。

另外,容量检测别只看总数。用 free -h 看一眼,再用 dmidecode 确认每条插槽是不是都插满了。我遇到过一条内存松了,系统只认了一半容量,折腾了半天才发现是物理接触问题。

4.3 硬盘型号与健康状态(SMART)检测

硬盘检测,我把它分成两步:第一步确认型号对不对,第二步看它还能活多久。

型号确认:

lsblk -o NAME,SIZE,MODEL,SERIAL

输出:

NAME    SIZE MODEL                     SERIAL
sda   931.5G Samsung SSD 860 EVO      S3Z8NB0M123456
sdb   931.5G WDC WD10EZEX            WD-WCC3F1KZ1234

SMART健康状态才是重头戏。我个人习惯用 smartctl

sudo smartctl -a /dev/sda | grep -E "Reallocated_Sector|Power_On_Hours|Raw_Read_Error"

重点关注这几个指标:

SMART属性 正常范围 危险信号
Reallocated_Sector_Ct 0 大于0就要警惕
Raw_Read_Error_Rate 接近0 持续增长说明盘要挂了
Power_On_Hours 视使用场景而定 超过标称MTBF的80%建议更换

避坑指南: 我曾经遇到过一批SSD,SMART数据全正常,但实际读写速度只有标称的十分之一。后来发现是固件bug。所以,除了看SMART,我建议再跑一次 hdparm -Tt /dev/sda 做实际读写测试。

4.4 GPU型号与显存检测

GPU检测,说白了就是确认显卡是不是你要的那张,显存有没有缩水。

NVIDIA显卡用这个:

nvidia-smi --query-gpu=name,memory.total,memory.used --format=csv

输出:

name, memory.total [MiB], memory.used [MiB]
NVIDIA GeForce RTX 3080, 10240 MiB, 1234 MiB

AMD显卡用这个:

rocm-smi --showproductname --showmeminfo

这里有个细节:显存容量要跟标称值完全一致。比如RTX 3080是10GB,如果显示9.8GB,那可能是部分显存被系统预留了,但如果是8GB,那肯定有问题。

个人经验: 我习惯在检测GPU时顺便跑一下 glxinfo | grep "OpenGL renderer",确认驱动层识别到的型号跟硬件一致。有一次客户反馈说显卡性能不对,查了半天发现是驱动装错了,系统把RTX 3090识别成了RTX 3080。

嗯,核心硬件检测这块,说白了就是「眼见为实」。不要相信任何人的口头承诺,也不要相信系统自动识别出来的结果。每一条数据,都要跟BOM表、跟标称值逐字核对。这是整机联调的第一道防线,守住了,后面才能省心。


公众号:蓝海资料掘金营,微信deep3321