设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 1060|回复: 0

比特彗星主线程和工作线程分别处理什么数据,什么原理居然支持CPU多核心优化

[复制链接]
 成长值: 318

签到天数: 5092 天

[LV.Master]伴坛终老

发表于 2024/9/28 21:49 | 显示全部楼层 |阅读模式 |Google Chrome 129.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
比特彗星主线程和工作线程分别处理什么数据,什么原理居然支持CPU多核心优化

发现只有比特彗星能支持多核心CPU,qbittorrent这些其它BT软件都只能单核心CPU

答:有很多连接优化策略是用定时器在主线程执行的,比如peer连接优先级调整、反吸血检查、接收到的分块数据进行hash检查等。目前只有网络收发、磁盘读写、DHT处理、uTP处理等部分模块是在工作线程处理的。后续可以花时间继续优化一下。

催官方优化的帖子补充
下载文件接收到的分块数据进行hash检查下一版更新的时候移动到工作线程?
这个过程比较吃CPU,本来主线程运行几千个BT任务的时候,CPU的单个核心满负荷工作,做种上传就已经让主线程比较吃力,,,RSS有新的下载任务创建的话,下载完成一个区块然后主线程CPU飙高一下,导致整个界面卡死几秒

帖子补充
还有定时器、peer连接优先级调整、反吸血检查,虽然这些吃CPU不多,但是也可以考虑移动到其它线程

发个图片给你演示一下,比较严重的是创建任务的一瞬间,会界面无响应卡住大约5秒
还有就是下载区块后的hash检查,整个界面会卡好几秒延迟,鼠标点击右键可以看到反应巨慢,直接软件卡死,这一定要弄到工作线程里去,不要放主线程
https://web.archive.org/web/20251114135709/https://send.itzmx.com/files/lH42NCyflEZ7nFUNLZqefyq.gif

用Windows Performance Toolkit分析了下CPU占用问题
主要优化点:
1、定时器队列插入、删除处理耗时较大;
2、任务列表实时排序;
3、BT任务发送数据时的缓冲区加密及复制;
4、BT任务接收数据时的缓冲区解密及复制;

评分

参与人数 1樱币 +2 收起 理由
algoblue + 2 神马都是浮云

查看全部评分

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2025/12/13 05:37 , Processed in 0.076183 second(s), 20 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表