我问AskUbuntu 上的这个问题,但现在我在这里询问更具体的硬件问题。
看来我的 RAM 有问题,因为我在 Memtest86+ 中发现了大约 6000 个错误,并且在 1 小时内出现了 10 多次死机和硬重启,但现在我只需拔下两个 RAM 模块并重新插入,就不会出现任何新错误。它还在保修期内,因此戴尔愿意在下周免费更换整个主板和两个 RAM 棒(每个 8 GB),但我想我应该拒绝这个提议,但我担心我的硬件可能仍然有问题。现在没有出现任何错误,我想知道这是否比我现在需要的更大风险,让他们更换整个主板,特别是因为他们将使用翻新零件并且,我对翻新硬件部件的总体经验(不是戴尔,只是一般情况)告诉我,除非我真的别无选择,否则最好远离它。
我该怎么办?我的 RAM 是否曾经出现过问题?或者,这只是机械针脚对齐或碎片问题,只需拔下并重新插入 RAM 即可解决?
注意我的电脑已经用了 1 年了。这是一台高端戴尔笔记本电脑。最近,我彻底清除了 Windows 10 并安装了 Ubuntu 20.04。
这是我发送给戴尔支持团队的完整描述,但他们从来没有派工程师看过我的描述,所以我想看看这里是否有人知道可能发生了什么以及解决方案是什么。
[我发送给戴尔的消息(开始)]
我进行了一些故障排除,但仍然让我困惑。
请注意,我的操作系统是 Linux Ubuntu 20.04。
在过去的两周里,我偶尔会遇到死机的情况,但这种情况很少见,而且通常是在启动或关机时发生。有时在启动过程中它会死机,我必须按住电源按钮才能重试。我并没有想太多,但还是很困惑。3 天前,我经历了反复的完全死机,任何形式的软重启都行不通,甚至无法使用特殊的 Ctrl + Alt + PrScr + REISUB 序列来中断 Linux 内核,该序列用于软重启 Linux 计算机。每次我都必须进行完全硬重启。这种情况一次又一次地发生——一个小时内大约发生了 10 多次。系统完全无法使用。
我启动了戴尔诊断程序菜单并运行了诊断程序两次. 每次他们冻结在内存测试屏幕上停留约 15 分钟,其中大约 4 分 20 秒的时间保持在屏幕上冻结状态,因此每次我都硬重启才能退出。
然后我将 BIOS 从 1.9 升级到 1.15.1(3 天前),但冻结仍然持续。然后我在 BIOS/UEFI 中启用传统启动,启动到 Memtest86+ v5.01(https://www.memtest.org/),并运行了内存测试。结果发现数千个错误在大约 6 分钟内,总共5632大约 2 小时内出现错误。然后我打电话给你。
以下是这些错误的屏幕截图。此屏幕截图显示了测试 10 中地址 003e295861c 处的错误,例如:
此屏幕截图显示了从地址到 DIMM 插槽的内存映射。如您所见,此地址映射到 DIMM B,这意味着内存已损坏:
例如,此屏幕截图显示测试 7 中地址 0017dfdf1b8 处的错误,在测试开始后仅 5 分 35 秒内就出现了错误。这映射到 DIMM A,这意味着内存有问题。因此,两个内存都是坏的:
然而,我无法再重现错误(现在我在进一步测试时已经更换了 RAM 条)。无论我是在 DIMM A 还是 DIMM B 中单独或一起测试内存,它们现在都通过了。此外,启动菜单中的 Dell 诊断测试现在可运行完成并通过。这有意义吗?!我的每小时死机次数超过 10 次,错误次数为 5632 次,现在却没有了?我不知道是不是主板出了问题,但是我从启动菜单运行的所有戴尔诊断测试现在也都通过了。我需要这台电脑能够正常工作并且可靠,并且不会产生内存损坏。您觉得呢?谢谢!
[我发给戴尔的消息(结束)]
另外,我甚至用这个命令运行了压力测试,持续 8 个小时,CPU 使用率为 100%(所有 4 个核心/8 个硬件线程均为 100%),RAM 使用率为整个时间 ~98%,它也运行良好:
stress-ng --cpu 8 --vm 8 --vm-bytes 100% --timeout 8h --metrics
现在我已经在重新插入两个 RAM 条的情况下运行 Memtest86+ 超过 30 个小时,没有出现任何错误。
我怎样才能将错误数从 5632 减为零?
注意:我还运行了 Memtest86+ v5.01仅有的在单线程模式下,所以我的错误都不是由于在多线程模式下运行时已知的错误造成的。
有关的:
- 相关,但是确实尚无定论且非重复:灰尘会导致 DDR RAM 错误吗?
- 有点相关--也不是重复的:通过交换 RAM 使用的插槽解决 RAM 错误
未来故障排除笔记(回顾:我希望我会这么做的):
- 我希望我应该再运行 Memtest86+ 测试 2 到 3 次,每次耗时不到 1 小时前拔掉任何内存模块,只是为了看看我是否始终如一经历了数千次失败。
- 然后,假设错误是一致的,我希望第一的我本来要排除故障的方法就是拔掉两个内存模块,然后把它们插回原来的位置!然后,再次运行测试,如果测试立即通过,而在此之前我曾连续失败了几次,那么我就会知道可以肯定的是,RAM 模块只是因为某种原因安装不正确,拔下它们然后再重新插入就可以解决问题!
参考:
- 我最初是如何开始了解
stress-ng
Linux 压力测试命令行工具的:https://www.cyberciti.biz/faq/stress-test-linux-unix-server-with-stress-ng/
答案1
取出内存再放回去肯定可以解决这类问题。
(但问题可能在几个月后再次出现。)
基本上这里有 3 个独立的问题:
- 由于机械公差,插槽中的接触片会脱落,并且 RAM/插槽在长时间使用过程中会因多次加热/冷却而略微收缩/膨胀。这可能会导致接触不良和/或触点上积聚一层非常薄的锈迹。重新安装 RAM 可以通过机械方式重新对齐触点和/或刮掉锈迹来解决这个问题。
- RAM 触点和插槽的金属通常在化学上并不完全相同(不同的合金)。这会导致金属之间发生化学反应,逐渐在它们之间的边界上形成一层非常薄的反应材料膜。这一层的电气性能通常比触点本身更差,这会导致稳定性问题。
取出/放回 RAM 会刮掉这一层,直到它再次形成,您就可以继续使用。特别是在相对潮湿的环境中使用的计算机可能会受到这种情况的影响,但通常需要几年时间才会成为问题。 - 仅适用于人手接触过 RAM 的情况:皮肤上会残留油性残留物。如果残留物接触到 RAM 的触点,可能会与金属发生轻微反应,再次在触点上形成薄膜,影响电气性能。
上述 3 种影响可以组合出现并相互放大。并且它们可能会在长时间使用电脑后开始出现,而电脑并没有出现问题。即使是在出厂后你从未亲自接触过内部部件的电脑,也可能发生这种情况。
测试可疑 RAM 比较棘手,特别是在您不知道有其他可用良好系统的情况下。
当您怀疑 RAM 有问题时,通常的做法是先取出 RAM。
目视检查是否有弯曲的触点:如果有,请立即扔掉。它再也不会 100% 可靠了。
然后清洁触点并重新安装 RAM在同一个位置然后重新测试。
如果测试结果仍然不好,您可以在该插槽中尝试已知良好的 RAM。(如果主板需要使用特定的插槽组合,则并不总是可行的。)如果测试结果仍然不好,则插槽本身通常是罪魁祸首。
您可以只在另一个插槽中使用可疑 RAM 进行测试。
主板/内存控制器是问题所在,您在同一个插槽中测试的任何 RAM 都会出现问题。但请注意,当您更改内存布局/配置时(例如使用更少或不同大小的 RAM 条进行测试),问题可能会转移到另一个插槽。也有可能它在某些内存组合中不稳定,而在其他内存组合中稳定(取决于现有 RAM 的物理布局)。
并且始终将 BIOS 中的 RAM 时序设置为标准时序进行测试。超频 RAM 可能会导致其自身问题并使测试不可靠。
如果您有另一台已知运行良好的计算机,最简单的方法可能是只使用问题系统的 1 个 RAM 来运行第二台计算机。逐个测试所有 RAM。然后使用在之前的测试中已检查过运行良好的 RAM 来测试有问题的计算机的主板。
关于清洁触点的几句话:
不要试图清洁主板上的插槽。很容易损坏它们。
取出/插入 RAM 条的摩擦力足以将触点刮干净。
对于 RAM 条本身:
用铅笔橡皮擦沿正确方向轻轻擦拭。(当您水平握住 RAM 并使触点朝下时,请从上到下擦拭。因此,沿着触点的方向擦拭,如果将其插入插槽中。)擦拭
两侧,并尽量避免用手指触摸触点。
如果您确实触摸了它们(或只是为了安全起见),请用棉签蘸取异丙醇(可在任何药店买到)擦拭触点。不断重复,直到您再也看不到棉签上的任何黑色污迹。