关注PC行业的朋友可能都知道,前段时间微软的Windows更新又“捅了个大篓子”。
具体来说,这个名为KB5063878的更新在安装后,可能会导致部分特定型号的SSD在执行长时间、大数据量的连续写入(据称约为50GB以上)后,突然变得无法访问。也就是俗称的“掉盘”。
很显然,这是微软的程序员又整了一次烂活。但如果去更深入地去探究这件事就会发现,它的“舆论影响”并不是用户众口一词地怒喷程序员,而是变成了一个有点意思的“两极分化”局面。
在一些大众媒体、非技术向的内容中,许多读者是怒喷微软技术退步,近年来系统功能研发“不做人”。
但与此同时,在一些技术向的社交媒体账号以及平台上,其实还能看到另一种声音,那就是微软的这个BUG虽然坏,但也让部分劣质产品“现了原型”,那些受到影响的用户并不能被认为是倒霉,反而应该是为自己贪便宜的行为付出了代价。
虽然这样的观点很刺耳,但既然出现了便不得不让我们有所思考,这到底是怎么一回事呢?
根据目前网传的一些技术社区逆向工程结果显示,KB5063878补丁的BUG源自于修改了Windows默认NVMe驱动(即StorNVMe)对主机内存缓冲(HMB)技术的管理机制。所以在安装了这个有问题的补丁后,如果一次写入过大的数据量,系统就可能无法正确回收已经完成IO请求的内存,并最终导致内存溢出。在内存溢出后,系统为了确保“稳定性”会强制关闭出错的进程,结果就会导致HMB缓存丢失。此时SSD主控会判断“缓存崩溃”,并自我锁死,进入保护状态(即掉盘)。
由于上面这段文字非常枯燥,所以我们将它的三个关键点总结了出来。
第一,出问题的是系统默认的NVMe驱动,所以如果使用的是自带第三方NVMe驱动的SSD则不受影响。而自带NVMe驱动的SSD通常是自研主控的高端型号,常见依赖第三方通路主控的低端SSD通常不会提供自己的NVMe驱动,而是使用系统默认驱动。
其次,出问题的具体机制是HMB功能,但该功能一般只有“无缓存SSD”才会严重依赖HMB的缓存机制。市面上无缓存SSD价格通常要比有缓存的型号便宜许多,且无缓SSD使用的闪存品质普遍更差、原生写入速度就更低,所以更容易触发这个BUG出现。
第三,只有持续大量写入数据后,才有可能触发这个缓存溢出被错误清除、从而导致“掉盘”的BUG。通常这个场景会出现在大体量游戏、AI大模型的下载和安装过程中,一般的轻量使用并不太会出现如此大的持续写入数据量。
明白了以上这三点,其实也就不难理解,为什么在微软这次的“掉盘BUG”发生后,会有部分用户表现出“幸灾乐祸”的态度,甚至指责出问题的人是“自找”了。
毕竟“懂行”的PC玩家会说,无缓SSD就是“大坑”,里面寿命短、性能差的产品本就不少,所以买这样的SSD来打游戏或跑其他高负载任务就是“纯纯作死”。微软的这个BUG只不过是加速了这个过程,所以根子上还是用户自己的问题。
但这样的观点,真的就合理吗?
一方面大家要知道,就算无缓存、通路主控、QLC闪存的SSD,那也是正经行业技术标准允许的“合格产品”。它们可能寿命比高端SSD短上好几倍,也可能会在长时间使用后“掉速”严重,但这不并等于它们的“暴毙”就是合理的、理所当然的。更不等于原本能正常使用(虽然性能可能很差)的产品,在被微软的BUG搞坏后,还要被扣上“原形毕露”这样的帽子。
另一方面,倒也不是完全不能理解这部分“发烧友”对此事“冷嘲热讽”背后的动机。Ta们或许未必就是要借此“炫耀”,而更像是对部分不愿意尊重技术规律,却自我感觉爆棚的用户“发泄不满”。
毕竟随着PC的普及、再加上智能手机的兴起,确实有越来越多诸如“不会解压缩”、“不会安装Steam”、“exe为啥在手机上用不了”之类的段子出现。在这样的情况下,当一个突如其来的“Windows BUG”主要可能会影响到的对象,是仅限于公认“廉价、低质量”的硬件时,随之会演变成“高玩”群体对部分PC用户的“霸凌”,似乎也就并不让人感到奇怪了。
【本文图片来自网络】