本帖最後由 q_p 於 2015-2-1 16:38 編輯

回覆 15# PMIII
而凌天羽講果d o米即刻我講果d羅

你記唔記得自己講過d乜?
所以如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別
PMIII 發表於 31/1/2015 04:17 PM



你這個url o米只是講緊windows對harddisk data的caching方法
和本身harddisk內的buffer/cache無關
PMIII 發表於 1/2/2015 02:19 PM

絕對有關, 因爲你講嘅已經由OS cache左係Ram度.
亦係"data in the disk buffer is rarely reused"嘅原因.


所以page cache是os的事
cpu內的L1 L2 L3是cpu內裡自己的事
而harddisk的cache buffer亦是harddisk自己的事

而你就將三樣野混埋來講, 這樣不太正確.
PMIII 發表於 1/2/2015 02:16 PM

對於"Page cache 是儲存在CPU cache, DRamharddisk platter的", 你我之間有點誤會.
windows有個pagefile.sys檔案嚟暫存Ram嘅data(尤其當Ram唔夠位時), 所以我講嘅"harddisk platter"係指%SystemDrive%\pagefile.sys 呢個file儲係harddisk platter.
呢舊file成GB計, 仲要同Ram交換資料而更改, 頂多部分暫存於Disk Buffer嚟縮短I/O waiting,
所以我唔講佢儲係Disk Buffer度, 但不代表我否認 Disk Buffer嘅存在.
而對Page cache儲存在Ram一定無異議吧? 但一個運行中嘅程式嘅改動可能仲喺CPU cache度未寫出到Ram度.

TOP

本帖最後由 PMIII 於 2015-2-1 16:52 編輯

回覆 21# q_p

'所以如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別'

我那段是講緊d data是cache了在harddisk的buffer / cache中, 而不是由os去cache d data在系統記憶體內.
本來個topic一直是講緊harddisk的buffer / cache, 又點會無啦啦講緊系統記憶體?

我那句的意思是: 因為harddisk一直cache hit(而未expire), 而harddisk就會從harddisk內的buffer / cache中read data給cpu/ram(dma)
所以若果有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那速度就會有提升,因為是read緊harddisk內的buffer / cache

TOP

回覆 22# PMIII
因爲我有個概念由harddisk return嘅資料會cache左喺ram度,
係咪用左Direct memory access就唔經ram?

TOP

回覆 21# q_p

Page cache 那裡你仍然有混淆
pagefile.sys怎樣來的?是從windows OS自己產生出來的(當然你可以disable)
所以這個pagefile.sys本身就同harddisk中的buffer / cache無關,即是

cpu有register還有自己的L1/2/3 CACHE
harddisk有自己的buffer / cache

而CPU和Harddisk的CACHE都和系統記憶體無關,它們有它們自己的記憶體來處理工作或提升效能.

而pagefile.sys給windows的memory management用的

我說就說到這,信不信由你

TOP

回覆 23# q_p


DMA只是令讀取資料(IO)的時間不經cpu(嚴格上其實都經)
http://en.wikipedia.org/wiki/Direct_memory_access

DMA和什麼CACHING是無關的

而系統記憶體的CACHING從來都是OS處理的.

TOP

本帖最後由 q_p 於 2015-2-1 17:33 編輯
而CPU和Harddisk的CACHE都和系統記憶體無關,它們有它們自己的記憶體來處理工作或提升效能.
PMIII 發表於 1/2/2015 04:56 PM

大家嘅着眼點不同...
我明白兼同意你呢句, 但電腦運作上cpu cache同OS main memory(ram)關係密切..
我係指cpu cache入面嘅instruction同data都係由ram度嘅data copy過嚟, 所以我先包埋嚟講.
我知cpu register嘅野始終留在CPU度 唔關ram, harddisk buffer事, 等等...

TOP

DMA只是令讀取資料(IO)的時間不經cpu(嚴格上其實都經)
DMA和什麼CACHING是無關的
而系統記憶體的CACHING從來都是OS處理的
PMIII 發表於 1/2/2015 05:01 PM

... 咁harddisk經DMA controller return data俾cpu/ram之後, 由於windows有file caching, 咁嗰個程式重覆讀取時唔係用番windows 係ram留底嘅copy咩? 點會用到harddisk buffer架?!

TOP

回覆 27# q_p


如果能保證windows系統執行的那個程式在讀取完那個file之後,該file的資料長期存在ram(cache)中
那windows就不會再讀harddisk的data.

但實際上,因為os對harddisk/storage的處理複雜和multi task的問題,windows的file cache常常會flush或expire.

另一個問題就是,windows/OS本身不能保證某一個file有沒有更改掉,即使有caching,都會在某一段時間內就expire.

所以harddisk內的buffer / cache仍然存在......如果os能100%解決這問題,harddisk就不會有buffer / cache了

TOP

另一個問題就是,windows/OS本身不能保證某一個file有沒有更改掉,即使有caching,都會在某一段時間內就expire.

所以harddisk內的buffer / cache仍然存在......如果os能100%解決這問題,harddisk就不會有buffer / cache了

其實HDD緩衝係讀寫乃至queuing方面都有提升整體效率既效用...
詳細係點就自己GOOGLE啦
不過絕對唔係咩「OS解決左cache flush/expire -> HDD唔洗有緩衝」囉...

TOP

回覆 29# yjfoeg


我的意思就是這樣,本來os cache和harddisk buffer/cache就是兩樣野

不過,以我所知,有一些ssd是無buffer/cache的

TOP