Steam下载为何总是“磁盘”作祟?真相令玩家意外

最近我入手了一款期待已久的大作,兴冲冲地打开Steam点击下载,心想以我的百兆宽带,肯定很快就能玩了。结果下载开始后,整个电脑却像中了邪一样,打开个网页都卡半天。我打开任务管理器一看,好家伙,磁盘占用率稳稳地躺在100%上,而网络使用率却不到一半。这让我困惑不已:为什么Steam下载,卡的不是网速,反而是磁盘?

蹊跷的卡顿

起初我以为是电脑中病毒了,但经过排查,发现每次Steam下载时都会出现这种情况。即使暂停下载,电脑马上恢复流畅。我意识到问题出在Steam身上。于是我开始寻找原因,首先我想到的是网速快慢,但观察发现网络并没有跑满,反而是硬盘灯一直常亮。我开始怀疑是硬盘的问题,我的硬盘是几年前的老机械硬盘。难道Steam下载时必须完全依赖硬盘性能?

Steam下载的独特机制

经过一番了解,我发现Steam的下载方式并不是像普通下载那样,先把所有数据包缓存到内存再写入。它采用了一种边下载边写入的策略,而且为了确保游戏文件的完整性和运行流畅,它还会同时进行两项重要动作。

边下边写,预分配空间

Steam在一开始就会为整个游戏创建所有需要的文件夹和文件,而且直接分配占用相应大小的磁盘空间。这意味着当我在点击下载的瞬间,硬盘不仅要处理数据写入请求,还要预先划分一大片区域给这个游戏。对于机械硬盘来说,这种大块的空间分配操作本身就非常耗时,因为需要在文件系统中更新大量的元数据。而在这之后,下载的数据片段会随机地写入这些预先分配好的文件中,每个小的数据包到达后,硬盘都要进行随机写操作,这对于机械硬盘的磁头寻道来说无疑是灾难性的。

实时校验,确保无错

不仅如此,Steam还会对下载的每一个块进行校验,与服务器上的哈希值比对。这意味着在写入的同时,还要频繁地读取已经写入的部分进行验证。这种一边写一边读的操作,进一步加剧了磁盘的负载。有时候我觉得Steam是在故意“折腾”硬盘,但实际上是它在尽量保证下载的文件不出错,毕竟动辄几十GB的游戏,如果因为一个比特错误导致崩溃,那就太糟糕了。

Steam下载为何总是“磁盘”作祟?真相令玩家意外

磁盘的宿命

在这种机制下,硬盘速度就成为了瓶颈。机械硬盘的读写速度大约在100MB/s到200MB/s之间,但随机读写性能非常差,4K读写可能只有1MB/s不到。而SSD固态硬盘的随机读写能力就强大多了。我回想自己当初装机为了省钱而选择机械硬盘,如今成为短板也是必然。其实如果说网速是水管,那硬盘就是水桶;水管再粗,水桶太小也存不下。可Steam的下载过程更像是在一边用水管接水,一边把接到的水倒进一个复杂的迷宫水槽里,每一步都需要水槽自身的运作,而这运作的速度就取决于水槽的结构材质了。

我的发现与所悟

为了验证,我后来升级了一块固态硬盘,又把游戏安装到固态上。再下载大型游戏时,磁盘占用率很少超过50%,同时电脑也不卡了。我这才明白,Steam本身没有做错什么,而是我的硬件已经跟不上这个时代主流游戏的需求了。如今游戏体积越来越庞大,动不动就上百GB,Steam的下载机制为了保证可靠性,必然要牺牲一部分磁盘性能。而我,也踏上了升级SSD的道路。

经过这个事件,我理解了为什么很多老玩家总在强调SSD对于游戏体验的重要性。不光是游戏的加载速度,连下载过程都会受其影响。Steam下载为什么是“磁盘”?因为它就在那里,承载着每一行代码,每一份快乐,也默默忍受着积年累月的读写风暴。