宽带是固定的,任务数只是把这根管子切成更多份。十个任务同时跑,每个分到的连接数和带宽都被摊薄,结果是每个都慢、每个都看不到完成。更麻烦的是连接数被摊开之后,能连上的高质量 peer 变少,整体效率比单任务还低。所以多任务的第一个原则是控制同时进行的数量,而不是把限速调到多细。
多数人只盯下载速度,实际上上传被占满会把下载一起拖死。客户端要靠上传换回请求,上传队列堵住,对方就不给你发块。经验值是把上传限在总带宽的三成到四成,留出余量给确认包和请求。这个数值不需要算得很准,边跑边看下载有没有因为上传打满而抖就行。
把任务分三队比给每个任务单独设速要省心:急着看的放高优先级、补齐老资源的放普通、纯囤积的放低优先级。队列调度会先满足高优先级的连接数,剩下的带宽才分给后面。这样既不会让某个任务饿死,也不会让一堆不急的任务把管子占满。
单任务限速的意义是防止一个任务吃光所有连接,一般设在总带宽的一半左右比较合适。低于三成会出现明明宽带够用但速度上不去的情况,因为单任务的连接数撑不满。设完之后观察十分钟,速度稳定在限值附近就说明这个数合理,一直在限值下方徘徊就该往上放。
客户端的队列不是按顺序一个一个跑,而是在活跃任务之间轮转连接和请求。活跃任务越多,每个任务在单位时间里拿到的请求机会越少,表现出来就是进度条都动、但都动得慢。所以队列上限设成三到五个,比设成二十个的总完成时间更短,这一点在机械盘上尤其明显。
千兆宽带、固态盘、资源热度高,这时候单任务就能跑满,多开只会互相拖。反过来带宽小、盘慢、资源冷,多任务更容易让每个都卡在找 peer 的阶段。判断办法很简单:只留一个任务跑十分钟,如果速度没降,就说明之前的多任务是白开的。