我有两个 RAM 模块(DDR5。一个是 8 GB,另一个是 16 GB。)在 Linux 中,在某些繁忙的任务下,它们的温度如下:
spd5118-i2c-1-51
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1: +46.0°C (low = +0.0°C, high = +55.0°C)
(crit low = +0.0°C, crit = +85.0°C)
spd5118-i2c-1-50
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1: +57.0°C (low = +0.0°C, high = +55.0°C) ALARM (HIGH)
(crit low = +0.0°C, crit = +85.0°C)
问题 1:一个是 46°C,另一个是 57°C。这种差异正常吗?
问题 2:此信息似乎来自spd 5118。(我不知道它是什么。)在 Linux 中,当超过 55°C 的“高”阈值时,它会打印为“ALARM”,但 IIUC < 70°C 通常没问题,对吗?如果是这样,55°C 的限制是否太低而没有太多理由?
在此上下文中,Linux
spd5118
内核模块是 DDR5 内存模块的温度传感器和 SPD EEPROM 的驱动程序。该名称来自 DDR5 内存模块上相关元数据芯片的 JEDEC 规范。对于 DDR4,您必须使用两个单独的模块来实现相同的目的:
ee1004
访问 SPD 信息和jc42
DIMM 温度传感器。DDR3 及更早的版本必须使用较旧eeprom
或较新的at24
模块来访问 SPD 信息,并且 DDR3 内存模块根本没有温度传感器的标准规格。(SPD 信息访问允许您运行
sudo decode-dimms
以查看内存的技术规格。)由于您的 RAM 模块大小不同,因此它们必须是不同的型号,因此它们会有不同的热行为。这也意味着至少三分之一的内存未在双通道模式下工作,最坏的情况下,所有内存都无法工作;因此,完全有可能繁忙任务的内存仅从映射到较热的 DIMM 的范围中分配,因此它大部分时间处于繁忙状态,而另一个内存大部分时间处于空闲状态。
如果您愿意,您可以通过创建配置文件来调整警报范围,例如
/etc/sensors.d/memory-temp.conf
,其内容如下:请注意,您还可以为温度读数分配单独的标签。
创建文件后,运行
sudo sensors --set
以使新的限制生效。I2C 总线相对较慢,因此在增加高温限制后,您可能需要等待几秒钟才能清除警报。
我想说,在繁忙的系统中,内存模块的温度达到 57 摄氏度并不算高,但由于另一个内存模块的温度要低得多,所以我想检查一下温度较高的内存模块是否有东西阻碍了空气流通,或者是否有一些愚蠢的东西,比如为了美观而使用塑料(= 隔热)外壳,而不是真正起作用的金属散热器。