从1.77版本升级上来后发现BitComet喜提uTP协议,但是似乎只要连上了任何一个uTP的peer,不管传输速度如何,都会占满一整个CPU核心。风扇就开始呼呼转,对笔记本用户来说很难受。
看了下论坛里已有的帖子,说这是因为没做多核优化,可以减小network.max_udp_pkt_per_sec来解决。但就算我把这个参数减到了20,且仅开启一个做种任务(只有三四个uTP的peer),UDP线程还是会始终占满一整个CPU核心。如果把uTP的peer都踢掉则不再占满CPU,直到又有新的uTP peer连上来就继续占满CPU,说明这确实是uTP的问题。
是不是目前BitComet在实现uTP的时候用了spin lock这样的忙等待的策略啊,还是我哪里配置的有问题?按理说每秒20个UDP包怎么着都不需要占满一个核心。总之我暂时只能把uTP先关了,希望作者大佬能改进一下这个CPU占用问题。