Linux版比特彗星BT软件下调磁盘缓存数值为512M导致上传速度变慢解决办法,等开发者支持sendfile
Linux版比特彗星BT软件下调磁盘缓存数值为512M导致上传速度变慢解决办法,等开发者支持sendfile这个之前提到过,唯一的解决办法就是不使用进程内存缓存独享,转而采用操作系统内核系统缓存,Linux平台下改为 sendfile 调用操作系统缓存,Windows平台则是 TransmitFile ,应该在开发者的todo list里,还要等后续版本更新,高级设置开关来是否切换
描述:启用系统缓存,可设置为使用256MB的进程缓存,进程缓存不足时,读盘的时候通过 sendfile 函数则可实现操作系统缓存,或者彻底禁用缓存的时候才使用 sendfile 系统缓存
由于你设置512MB缓存,导致真实磁盘读取次数数值大幅上涨,读盘命中率大幅下跌,所以引起了上传速度被砍半的现象
比特彗星进程最小内存缓存应当设置为256MB,BT做种上传任务提升磁盘读取性能达到99%命中率,16MB区块和宽带速度关系
https://bbs.itzmx.com/thread-111576-1-1.html
为什么比特彗星从任务管理器来看发现进程内存占用比qbittorrent高 系统级磁盘缓存
https://bbs.itzmx.com/thread-104963-1-1.html
毕竟有时候操作系统缓存是不可信的,某些用户会导致qb出现卡死崩溃现象,提供一个开关很有必要
并且BT可能需要进行加密传输,基于https的 SSL_sendfile 并不适用在BT上(而且iouring需要较高的5.10内核版本,推荐6.1及后续),函数使用 sendfile 最大的特点就是支持操作系统缓存( 2.1及以上内核实测可用,推荐2.4及后续)
现在比特彗星这种读盘策略就是需要大内存作为磁盘缓存,等后续支持 sendfile 操作系统缓存了,Linux版本下的性能就能在1GB小内存的VPS服务器中和 Transmission、qbittorrent 一样了
毕竟也才刚跨平台没多久,主力更新还是在Windows端,在2024年12月提到,目前一年暂时还没实现。
https://www.cometbbs.com/t/linux%E5%86%85%E6%B5%8B%E7%89%88/88604/237
对了,能不能帮我加个高级选项,bittorrent.sendfile
sendfile,直接调用系统api走内核级内存cache,不从进程读取数据,就和qb操作系统缓存类似,这样Linux下会存储缓存信息在buff/cache中,此时在iotop不会发生磁盘调用
意思是
该选项默认值否,可选值是
启用该选项的设计实现为这样,不要写入的下载任务不走缓存了
http和BT下载任务依旧使用原有进程缓存
针对BT上传和长效种子,改为sendfile函数发起,使用系统级缓存这样在docker或者Linux与Windows下可以看到进程占用的内存会很小只有几十MB内存消耗
进程缓存有很大的优势
可以实现复杂的缓存策略,比如内容的有效期管理、清除策略等。而且可以在不同平台保持一致性, 压缩、加密等操作时,进程缓存可以更好地支持复杂的协议处理,这些操作直接使用sendfile函数可能不太方便。
我认为应该有一个sendfile来调度系统缓存,现在有了无gui启动后,避免后续推广docker和Linux版本的时候,有人会嫌弃进程内存占用大,使用sendfile函数后,一切缓存由操作系统内核控制,自动进行cache,由于cache不是独占容易被其它程序冲刷掉,所以要写个提示告知用户启用后可能引发性能下降
或者默认值为是,可选值为否,下方注释提示关闭系统缓存后会提高性能
对于xp系统我不知道是否支持sendfile
页:
[1]