普通不用 ECC 内存的电脑出现位翻转的概率有多大? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jinnrry
V2EX    硬件

普通不用 ECC 内存的电脑出现位翻转的概率有多大?

  •  1
     
  •   Jinnrry 2024-07-10 11:25:49 +08:00 5149 次点击
    这是一个创建于 539 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我记得很久很久以前,V 站有一次讨论要不要上 ECC 的帖子,当时有大佬给出了一段代码,大致是声明一个很大很大的数组,然后全部赋值成 1 ,然后再反复遍历检查,有可能出现值为 0 的结果。但是我现在无论如何都搜不到那篇帖子了。有没有大佬再给写个复现代码?

    我拿 Go 写的

    package main import "fmt" func min() { var arg [10000000000]bool for { for i := 0; i < 10000000000; i++ { arg[i] = true } for i := 0; i < 10000000000; i++ { if !arg[i] { fmt.Println("位翻转了!") return } } fmt.Println("!!") } } 

    我在 mac 上运行了很久,都没发生翻转,不知道是概率太低还是 golang 的 bool 数据结构有兼容处理

    45 条回复    2024-07-15 15:06:04 +08:00
    xupefei
        1
    xupefei  
       2024-07-10 11:27:59 +08:00 via iPhone
    你得把电脑搬到核反应堆里面才能看到这个现象。
    xuelu520
        2
    xuelu520  
       2024-07-10 11:30:22 +08:00
    概率比你中 500W 概率还要低
    R18
        3
    R18  
       2024-07-10 11:32:06 +08:00
    Jim N. Gray and Catharine van Ingen: "Empirical Measurements of Disk Failure
    Rates and Error Rates," Microsoft Research, MSR-TR-2005-166, December 2005
    R18
        4
    R18  
       2024-07-10 11:33:21 +08:00
    现代计算机上,你完全可以忽略。除非你用了不合格的内存,或者处于辐射过大。
    DonaldErvinKnuth
        5
    DonaldErvinKnuth  
       2024-07-10 11:36:51 +08:00
    正好做这个。出现的概率很低。不同的产品级别,要求不一样,比如汽车上的,企业级的,消费类的,消费类又有普通消费和游戏等。要求高的出厂会测试的更严格,用的原料更好,要求低的出厂要求会低,或者会有要求高过滤掉的再来测试,合格后出厂,类似于 i9 i7 i5 一样,同样的芯片,好的用 i9 ,不好的锁核下放。

    但是出现这种比特翻转的概率很低,即使是普通消费类,出厂测试都是在高温几十或者上百度,低温零下几十度,反复测试几个小时甚至几十个小时,然后才会在一批货中出现几个。
    totoro625
        6
    totoro625  
       2024-07-10 11:58:52 +08:00   3

    来源:/t/975376 https://www.bilibili.com/video/BV1AW4y1y796

    个人体验认为,品牌全新内存比不知来源的二手任何牌子的 ECC 内存可靠
    如果是淘宝买的便宜 ECC ,宁可不上 ECC
    真实经历就是淘宝买的十铨内存,Windows 经常蓝屏,换了京东买的英睿达的就好了
        7
    Reficul  
       2024-07-10 12:52:03 +08:00
    正常的时候大概率不会反转,但是反转了之后可能导致灾难性问题的话还是得上 ECC 。而且在内存快不行的时候,错误率可能会上升。

    如果数据不持久化,大不了就是花屏或者程序莫名其妙挂掉,重启之后数据 reset 了就好了。但是对于 ZFS 这类依赖内存的文件系统,可能会把数据搞炸。
    processzzp
        8
    processzzp  
       2024-07-10 13:20:00 +08:00   2
    可以看看这篇 NASA 的 PPT ,AMD CPU 总共吃了 17 兆 rad 的辐射,都没有出现损坏; DDR3 内存的耐辐射能力稍微低一点,但也吃了 1.1k rad 的辐射。现代工艺制程的芯片,耐辐射能力比老芯片强了好多倍
    https://nepp.nasa.gov/workshops/etw2013/talks/Wed_June12_2013/1140_LaBel_ AMD Processor Radiation Test Results.pdf
    Overfill3641
        9
    Overfill3641  
       2024-07-10 13:26:03 +08:00
    非关键数据损坏问题也不大,但不知道系统是否对关键程序、数据做校验。
    tool2dx
        10
    tool2dx  
       2024-07-10 13:37:52 +08:00
    @totoro625 我的经历是杂牌内存,连默认频率都不能长期稳定跑。去主板 Bios 把内存频率下调一档,马上就稳定很多。
    yinmin
        11
    yinmin  
       2024-07-10 13:40:47 +08:00 via iPhone
    op 应该想了解 Rowhammer 攻击吧,你的代码是不会发生翻转的,要反复对某个特定内存单元快速读/写,导致隔壁单元的内存翻转。
    cheng6563
        12
    cheng6563  
       2024-07-10 13:42:41 +08:00
    dell 普通台式电脑,挂了 MySQL 当开发机使用了约 2 年,然后之后基本每个月文件系统都要炸一次,你看着办。
    liu731
        13
    liu731  
    PRO
       2024-07-10 13:50:15 +08:00
    机房在福岛吗?真没必要担心这个问题,其他原因造成的宕机可能性更高。
    kaedeair
        14
    kaedeair  
       2024-07-10 14:14:50 +08:00
    概率比较低,需要大量频繁数据写入的场景下才比较容易观察到
    GeruzoniAnsasu
        15
    GeruzoniAnsasu  
       2024-07-10 14:33:56 +08:00
    看这个

    https://zhuanlan.zhihu.com/p/37235131
    https://www.infocomm-journal.com/cjnis/article/2018/2096-109x/2096-109x-4-1-00069.shtml

    针对性构造的 bit 翻转攻击是可能要结合电路结构来设计 payload 的
    SkywalkerJi
        16
    SkywalkerJi  
       2024-07-10 14:41:56 +08:00
    试试液氮超频有可能会出现。
    shadowyue
        17
    shadowyue  
       2024-07-10 14:44:06 +08:00
    测久点,普通环境下,花的电费能让供电局专门来关照的时候,是不是就能测出来了?
    Jinnrry
        18
    Jinnrry  
    OP
       2024-07-10 15:23:27 +08:00 via Android
    @liu731
    @R18
    @yinmin 单纯无聊,想复现一下位翻转看看
    liaohongxing
        19
    liaohongxing  
       2024-07-10 15:44:18 +08:00
    直接上 DDR5 ,由于 DDR5 频率。容易出出,默认都自带 odecc , 比没带 ecc 的强一丢丢
    yjsdaniel
        20
    yjsdaniel  
       2024-07-10 15:59:41 +08:00   1
    你不会是接了俄罗斯的绕月卫星改进项目外包订单了吧。。。。他们宣称的就是出现了此问题。
    ebushicao
    21
    ebushicao  
       2024-07-10 16:13:32 +08:00
    我觉得这就和钓鱼不戴头盔出现被人用砖头砸头的情况的概率一样。
    noahhhh
        22
    noahhhh  
       2024-07-10 16:14:51 +08:00 via Android
    内存越大概率越高,128GB 无 ECC 基本每个月要重启一遍,自己台式机除更新从不重启,从没遇到问题
    leonshaw
        23
    leonshaw  
       2024-07-10 16:19:34 +08:00
    跑 memtest86
    xtreme1
        24
    xtreme1  
       2024-07-10 16:23:59 +08:00   1
    你加个玩内存 oc 的群, 里面一堆人天天处心积虑绞尽脑汁地想怎么才能不翻转.
    tool2dx
        25
    tool2dx  
       2024-07-10 16:29:59 +08:00
    @xtreme1 哈哈,这倒是真的。给内存超频,往极限超,分分钟翻转。
    ETiV
        26
    ETiV  
       2024-07-10 16:42:35 +08:00 via iPhone   5
    我们 AWS 生产环境遇到过一次(疑似),而且是灾难级别的

    程序端打印的日志跟 slow query 里的语句差了一个 bit ,这个翻转了的 bit 把 where 给注释掉了,然后这条 update 语句更新了全表…
    moudy
        27
    moudy  
       2024-07-10 17:02:17 +08:00
    @yjsdaniel #20 这种就是挂了之后找不到问题,推给内存了吧
    ouqihang
        28
    ouqihang  
       2024-07-10 17:05:07 +08:00 via Android
    我觉得现在消费级电脑,内存出错的概率还是挺大的。游戏闪,后来排查到内存太热,内存大概 55 度到 60 度开始不稳定,但闪退后系统还是好的。系统里也有出错不过系统纠正过。所以服务器 ecc 内存频率低,还要严格按照厂家的参数跑不能超频。
    以前用一个挺古老的软件做计算化学,到自己用的那轮,一组人算出来的结果不相同,大概内容是找分子的最低能量结构。实验员说应该结果都一样,但这批电脑上几天加过内存,戴尔商用机。当然了复杂的任务是扔服务器跑,家用电脑连续开几天也怕死机,本地运行只是用来验证是不是能跑。
    但学期末有人赶进度,服务器不够就开几台台式机跑。
    JensenQian
        29
    JensenQian  
       2024-07-10 17:34:19 +08:00 via Android
    普通电脑基本上每天重启下就好了
    1145148964
        30
    1145148964  
       2024-07-10 17:42:53 +08:00
    一个关键滴的问题是你在淘宝买到滴 ECC 内存都是老板亲自动手装的。标签也是老板贴滴。
    kinkin666
        31
    kinkin666  
       2024-07-10 19:26:06 +08:00
    @ETiV 如此炫酷,好像有点体会到服务器 ecc 内存的重要性了
    m1nm13
        32
    m1nm13  
       2024-07-10 19:46:37 +08:00
    @totoro625 真的不是 MEMTEST 都不过的内存吗....
    privil
        33
    privil  
       2024-07-10 20:50:12 +08:00
    @ETiV #26 所以 AWS 的服务器没用 ECC 内存。话说我似乎看过你们的文章。
    GrayXu
        34
    GrayXu  
       2024-07-10 21:02:25 +08:00
    个人机器无所谓。
    scale 到大型数据中心这个场景来讨论,内存错误就是常见的错误。
    直接上数据,阿里云上二十五万台服务器在八个月时间里,有三万多台机器出现 CE 内存错误(七千万多次)。UE 导致的 failure 有三千多的工单。
    ETiV
        35
    ETiV  
       2024-07-10 21:34:00 +08:00
    @privil @kinkin666 我并没有表述 AWS 的服务器没有用 ECC 内存

    可能是我们的机器实在是太多了,所以遇到了非常极端的小概率问题的可能性也是有的吧…

    因为在这个事儿之前,我刚读过 Dropbox 关于它客户端 bitflip 相关问题的文章,因为 Dropbox 的用户体量就非常巨大,他们的客户端上的 bitflip 很常见…(文章里是这么说的)

    ----
    当然我们遇到的这个问题并没有定论,而且 AWS 的服务器不可能不用 ECC 内存,毕竟那么大的体量,出了问题他们担待不起。

    我对于问题原因的判断单纯因为两端的日志比对,字符 3 ( 0x33 ) 变成了字符 #( 0x23 ),就一个 bit 之差…
    cest
        36
    cest  
       2024-07-10 22:16:45 +08:00
    @ETiV #35
    ecc 也不是一定能抓到,抓到了修复也不是一定能修复

    不能出错的得上多套系统比对
    Kiriya
        37
    Kiriya  
       2024-07-10 23:29:38 +08:00
    家用计算机不超频使用基本不用考虑
    kinkin666
        38
    kinkin666  
       2024-07-11 09:48:50 +08:00
    wiki ECC_memory

    The most-common error correcting code, a single-error correction and double-error detection (SECDED) Hamming code, allows a single-bit error to be corrected and (in the usual configuration, with an extra parity bit) double-bit errors to be detected.

    那看来普通系统还是偶尔重启或者把实例轮流渐入渐出清爽点
    yanqiyu
        39
    yanqiyu  
       2024-07-11 13:30:23 +08:00
    我唯一一次意识到 bitrot 有可观的概率是同学告诉我他们在散列上取数的电脑爱死机(电脑暴露在中子束流下面)
    yanqiyu
        40
    yanqiyu  
       2024-07-11 13:34:22 +08:00
    草错别字*,是散裂不是散列

    以及原文代码,我不清楚 golang 里面的 bool 类型具体内存布局是怎样的,有可能你只用了一个字甚至更长的内存区域里面的一个 bit ,那就效率更低了
    kenvix
        41
    kenvix  
       2024-07-11 13:36:09 +08:00
    哪有你这样测试的?你这种代码能测出来就有鬼了,至少也得全设置成 0xFF ,sleep ,再等上一个月再取出查看
    yanqiyu
        42
    yanqiyu  
       2024-07-11 13:46:13 +08:00
    ^最好还要 mlock 一段内存下来,设置成各种各样的 pattern ,要么 sleep 之后检查,要么频繁写入频繁检查
    kenvix
        43
    kenvix  
       2024-07-11 13:47:28 +08:00
    @xupefei #1 你想错了,高温就够了。把内存加热到 85 度工况你看看错误率能飙到多少
    kenvix
        44
    kenvix  
       2024-07-11 13:48:12 +08:00
    @xupefei #1 啊,不过他这个测试代码肯定跑不出来,得用 memtest
    lx0758
        45
    lx0758  
       2024-07-15 15:06:04 +08:00
    我的小主机, 买的 2400 的内存, 经常蓝屏. BIOS 改成 2133 , 连续运行一年都没问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3322 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:19 PVG 12:19 LAX 20:19 JFK 23:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86