小樱 发表于 2020/11/26 06:35

比特彗星磁盘内存缓存区块数据bt下载逻辑

下载缓存的话,之前也有位网友说过,现在逻辑是区块写入缓存,下载完成一个区块则从内存立即写入区块数据(挺好的方案,不用修改,做成2套下载缓存方案)

要改动的话,从新功能入手
做个新功能,可选开启,开启后则停用替换原有方案,启用新方案功能进行下载缓存,可以考虑jemalloc内存缓存高性能开源解决方案,可以有效降低内存读写延迟提高吞吐量,https://github.com/jemalloc/jemalloc
达到自己设置的多少值后在写入,例如256M,达到256M后组合相邻的区块为一个大区块数据一次性写入磁盘,所以开启此功能应该强制要求配合顺序下载模式可以提高磁盘写入性能?随机区块下载会导致相邻的区块过少
因为此时相邻的区块组合后是顺序写入的(未组合区块的话,还是会导致大量的IO浪费,大文件区块设置例如2MB的话,区块有好几千个,还要写入上千次),组合后就已经不是随机写入了,IO性能会提高很多。
或者设置值为10G内存,超过下载的文件大小6G,整个文件下载完成了,如果设置值大于下载的文件,组合完毕后,那么在从内存一并顺序写入进去。就和windows文件管理器拷贝文件速度一样,此时可以跑满机械硬盘220MB/s顺序写入IO。
设置的内存值大小不允许比读取缓存数值大。内存写入磁盘后,应该立即标记为写入废弃,可以受到读取缓存的在最小值和最大值内自动调整大小所使用,若长时间未读取可以进行自动释放,防止内存泄漏。
当然网上有PrimoCache 这种软件可以实现我上面说的方案,能内置的话视乎更好些,以上为自己的一些想法,可以考虑下试试标记最为以后的版本作更新。

不可名 发表于 2020/11/27 01:17

。。
页: [1]
查看完整版本: 比特彗星磁盘内存缓存区块数据bt下载逻辑