硬碟同時讀取寫入

可否分開讀取寫入,同時讀取寫入會拖慢速度
2020-01-01 14_18_36_000253 - 工作管理員 2020-01-01 14_18_56_000254 - 工作管理員

拖慢是指?

你设置大一点内存缓存

硬碟單獨讀取或寫入都可以100MB/s以上,但同時分別只有30MB/s左右

已是16G

這不是 p2p 特性嗎? 同時間會跟多個 peer(用戶) 上傳(讀取) 與下載(寫入)…

你看一下全局是否磁碟快取命中率都高達 90% 理論上磁碟存取就不會太頻繁…

例如: 每秒上百次存取縮減到 0.5 次… 命中率蠻高的!

而且, 你的回應時間14.6毫秒還蠻優的… 理論上要上千上萬毫秒… 人體才會有感才對
image

補充: 未來可以考慮 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

連接數多, 加大磁碟快取… 很有感!


只是想問問,如果可以優先寫入 delay 讀取,是否可以減少硬碟瓶頸提升效能
另外,上傳速度不高,但為什麽會不斷有讀取?

這不是 p2p 特性嗎? 同時間會跟多個 peer(用戶) 上傳(讀取) 與下載(寫入)…

網絡同時上傳下載,硬碟通過快取輪流讀取寫入,這樣可否做到?

目前的逻辑就是这样的啊。都是要通过内存的。(台湾人翻译快取?记忆体?)
image
左边这块,是操作内存读取和写入的次数频率,右边是实际的硬盘操作

http://wiki.bitcomet.com/understanding_bitcomet?s[]=cache#what_is_disk_cache_in_bitcomet
http://wiki.bitcomet.com/intelligent_disk_cache

官方wiki上面都有说明的,比特彗星最大的优势,就是内存缓存,比其它同类软件更强大更好


這個硬碟只用來BT,但讀取寫入都是同時做的,而不是輪流

你这个需求是操作系统的,要和微软反映去提意见,改成单工作模式。要涉及到什么驱动层IO调度了,,毕竟工作原理都是双向的通道,感觉你是想读写分离开来作单通道
不过我感觉没有什么意义呀,毕竟你是机械硬盘,物理指针寻道就那么慢了的,不可能变快了
或者你下个 PrimoCache 设置一下,说不定可以解决你的问题。

磁碟提速服務程序: 運行中

那BitCometService.exe 這個Service是做什麽的,還以為用來處理硬碟讀寫的

另外,上傳速度不高(300KB/s左右),但為什麽會不斷有讀取(25MB/s左右)?

用于快速申请磁盘空间,可能及接管浏览器下载请求

上传300KB/s的情况,可能请求到多个区块,比如种子区块为4MB,如果请求到6个不同的区块进行上传,那么就是25MB/S的读取速度

感覺沒意義, 就好比多工變成單工, 隨機變循序存取, 磁碟改成磁帶… 衝高單一存取的效能, 卻忽卻整體運作沒有想像這容易… 你想改變整個程序, 卻不想改善你的硬碟吞吐量… 買一顆 pcie 4.0 ssd 才是正解… 不要想太多… XD

1個讚

猜測背景當時可能在算3份哈希表會用到大量讀取…