可否分開讀取寫入,同時讀取寫入會拖慢速度
拖慢是指?
你设置大一点内存缓存
硬碟單獨讀取或寫入都可以100MB/s以上,但同時分別只有30MB/s左右
已是16G
這不是 p2p 特性嗎? 同時間會跟多個 peer(用戶) 上傳(讀取) 與下載(寫入)…
你看一下全局是否磁碟快取命中率都高達 90% 理論上磁碟存取就不會太頻繁…
例如: 每秒上百次存取縮減到 0.5 次… 命中率蠻高的!
而且, 你的回應時間14.6毫秒還蠻優的… 理論上要上千上萬毫秒… 人體才會有感才對
補充: 未來可以考慮 PCIe 4.0 ssd 就不會有這類困擾…
@wxhere15 写入命中率是否只与分片大小有关?例如 1MiB 分片时命中率等于 1 - (16 KiB/ 1024KiB) * 100% ~= 98.5%,4MiB 分片时命中率为 1 - (16 KiB / 4096 KiB) * 100% ~= 99.6%
初步观察似乎是这样。若果真如此,增大缓存对提高“写入命中率”似乎没什么帮助。
缓存等于或者大于种子文件大小,是最理想的状态了(热门peer很多的情况,都是随机大量的区块,需要更大的缓存来填充命中率就高了。。)
根據兩位結論… 推論公式如下:
假設只有1個連接數, 磁碟快取設 1G
(1-(1x16/(1x1024)))x100 = 98.4375
假設只有1個連接數, 磁碟快取設 2G
(1-(1x16/(2x1024)))x100 = 99.21875
假設只有1個連接數, 磁碟快取設 16G
(1-(1x16/(16x1024)))x100 = 99.90234375
連接數少, 加大磁碟快取… 無感!
假設有50個連接數, 磁碟快取設 1G
(1-(50x16/(1x1024)))x100 = 21.875
假設有50個連接數, 磁碟快取設 2G
(1-(50x16/(2x1024)))x100 = 60.9375
假設有50個連接數, 磁碟快取設 16G
(1-(50x16/(16x1024)))x100 = 95.1171875
連接數多, 加大磁碟快取… 很有感!
這不是 p2p 特性嗎? 同時間會跟多個 peer(用戶) 上傳(讀取) 與下載(寫入)…
網絡同時上傳下載,硬碟通過快取輪流讀取寫入,這樣可否做到?
目前的逻辑就是这样的啊。都是要通过内存的。(台湾人翻译快取?记忆体?)
左边这块,是操作内存读取和写入的次数频率,右边是实际的硬盘操作
http://wiki.bitcomet.com/understanding_bitcomet?s[]=cache#what_is_disk_cache_in_bitcomet
http://wiki.bitcomet.com/intelligent_disk_cache
官方wiki上面都有说明的,比特彗星最大的优势,就是内存缓存,比其它同类软件更强大更好
你这个需求是操作系统的,要和微软反映去提意见,改成单工作模式。要涉及到什么驱动层IO调度了,,毕竟工作原理都是双向的通道,感觉你是想读写分离开来作单通道
不过我感觉没有什么意义呀,毕竟你是机械硬盘,物理指针寻道就那么慢了的,不可能变快了
或者你下个 PrimoCache 设置一下,说不定可以解决你的问题。
磁碟提速服務程序: 運行中
那BitCometService.exe 這個Service是做什麽的,還以為用來處理硬碟讀寫的
另外,上傳速度不高(300KB/s左右),但為什麽會不斷有讀取(25MB/s左右)?
用于快速申请磁盘空间,可能及接管浏览器下载请求
上传300KB/s的情况,可能请求到多个区块,比如种子区块为4MB,如果请求到6个不同的区块进行上传,那么就是25MB/S的读取速度
感覺沒意義, 就好比多工變成單工, 隨機變循序存取, 磁碟改成磁帶… 衝高單一存取的效能, 卻忽卻整體運作沒有想像這容易… 你想改變整個程序, 卻不想改善你的硬碟吞吐量… 買一顆 pcie 4.0 ssd 才是正解… 不要想太多… XD
猜測背景當時可能在算3份哈希表會用到大量讀取…