是否预分配空间主要源于填零导致硬盘负荷太重和磁盘碎片问题。
预分配空间的时候,系统会向申请的空间填零,因而刚开始下载的时候,不管网速如何,硬盘写入会跑满,如果此时因网速和内存里的缓存大小,缓存满了,又没有速度供有用的数据写入硬盘,就会下载速度骤降,等待缓存排空。
填零要说挺损固态寿命的。这个行为在机械硬盘是确确实实发生了,没在固态下载过,不知道有没有优化,避免真的填零。
对于ut
似乎不用预分配空间。在ut自己的帮助(绿色版里CHM文件)里,Appendix A→Preferences→General末尾对这个选项有说明,不影响碎片。一般而言,我也确保硬盘空间充足,不会下载着时候空间不足。所以就觉得没啥用处。
Pre-allocate all files tells µTorrent to create and fully allocate every file you select to download immediately after starting the torrent job. Note that this option does 2. not have an impact on hard drive fragmentation (advantageous or otherwise), as µTorrent already allocates each file upon writing to disk even without this option.
不预分配的话,是否还填零,这就不知道了,但一开始填零的量就少很多,能缓解磁盘负荷问题。
no_zero这个选项,ut帮助也有解释,可以自己看看,需要管理员权限或者改组策略,并且自行考虑相应的安全风险。对于我个人,觉得没啥风险,自己没啥敏感数据。
对于qb
由于ut的红种问题,我改用qb
qb没见类似no_zero的选项。
预分配空间也是会填0。我关闭了这个功能。预分配与否决定了libtorrent的storage mode,libtorrent文档明确写了,预分配会填零,不预分配的话会使用稀疏文件(NTFS是支持稀疏文件的),文档没说是否会填零,不过承认可能导致碎片。我认为,我个人平时下载也不多,没那么多新电影、电视剧或者番整天更新,一个月也就下载几次,就算有碎片,每周或者每月win自动整理,如果是固态的话,直接就不用考虑碎片问题。根据我的观察结果,稀疏文件似乎不填零。
内存上的缓存,建议设置为-1,即自动。首先自动的时候,根据内存大小自动设定了几百兆的缓存大小,是满足绝大多数情况的(记不清是qb/libtorrent的文档/issue具体哪里看到的了,qb或者libtorrent作者是这么说的)。原来我设定好几G的缓存(16G内存,设定的好像是4G缓存,8G内存好像是1G缓存),就发现无论qb或者其他程序使用内存,容易导致虚拟内存的换入换出,因而一直读写固态系统盘,损寿命。设置自动就没事了。至于ut,我已经不用了,不好断言如何设置缓存大小,ut好像不是用libtorrent,是自己写的。