本文经超能网授权转载,其它媒体转载请经超能网同意

很多读者朋友都是Steam的忠实用户,现在宽带的带宽普遍增多了,像200Mbps、500Mbps这样入户的也不少见了。

可能很多网速较快的朋友在Steam上下载游戏时会发现自己电脑的CPU占用率很高,难不成下载速度快了CPU会跟不上吗?

这是有可能发生的,原因呢,就出在Steam的整套下载机制上。

Steam下载为什么会狂吃CPU?秘密找到了-冯金伟博客园

Steam使用了一套较为复杂的文件下载机制。首先,开发者可以给自己的游戏建立多个仓库,每个仓库中可以存放不同的文件。

Steam会根据仓库中的文件内容,形成一份清单,同时将该仓库中的所有文件进行分块,每个块大小约为1MB。

为了不让没有购买过该游戏的用户轻松获取到游戏文件,Steam内容系统将每个块都使用LZMA算法进行了压缩,并且使用一个256-bit长度的密钥对文件块进行了AES加密

通过这样的设计,Steam能够有效保障整个下载过程是高效的,并且在下载时不会有差错。

同时,对于所有Steam用户来说,每个区块文件都是一样的,这也允许CDN存储静态的内容,而不是动态加密的。

Steam下载为什么会狂吃CPU?秘密找到了-冯金伟博客园
大概就是这样子,把整个仓库的文件给压缩并加密了

在下载一个已经发售的游戏时,Steam是可以第一时间拿到用于解密文件的密钥的。

这也就是Steam下载速度越快,CPU占用率越高的原因了——因为你同时间要解密的数据量更大了。

Steam下载为什么会狂吃CPU?秘密找到了-冯金伟博客园
在公司500Mbps的网络环境下,用Steam下载游戏大概会吃掉我这块i7-4770K约50%的占用率,还是很高的

而在下载尚未发售游戏的数据时,也就是在预载游戏时,由于拿不到用来解密数据的Key,Steam会把下载到的数据存到*.csd文件中,在游戏正式发售之后,就会使用拿到的密钥进行解密和解压缩。

如果你的存储设备速度慢,而网速较快的话,那确实不如不做预载、直接在正式发售后进行下载。

本文主要参考了SteamDB对Steam下载机制的解读文章,如果各位读者对Steam下载还有别的疑惑的话,欢迎在评论区中提出。

Steam下载为什么会狂吃CPU?秘密找到了-冯金伟博客园

优惠商品信息>>
爱奇艺VIP+京东PLUS打6折:打包仅需118元
领取小米有品新人99-20元优惠券
网易严选小龙虾 2盒装共6斤 99元包邮
绿联移动电源 双向快充18W 2W毫安 券后75元
怡浓麦丽素桶装520g 夹心黑巧克力朱古力麦芽脆心 券后38元