我有一個讀取基準測試,並且在連續運行之間,我必須確保數據不駐留在內存中以避免由於高速緩存而出現的影響。到目前爲止,我曾經做過的事情是:運行一個程序,在讀取基準測試的連續運行之間寫入一個大文件。類似於如何在讀取基準測試中避免高速緩存效應
./read_benchmark
./write --size 64G --path /tmp/test.out
./read_benchmark
寫入程序只是將大小爲1G的數組寫入64個文件。由於主內存的大小是64G,我寫了一個大約爲。相同的尺寸。問題在於寫作需要很長時間,我想知道是否有更好的方法來做到這一點,即避免數據緩存時出現的效果。
另外,如果我將數據寫入/ dev/null會發生什麼?
./write --size 64G --path /dev/null
這樣,寫程序退出速度非常快,實際上沒有執行I/O,但我不知道這是否會覆蓋主內存,這也是我最終要的64G。
非常感謝您的輸入。
但我仍然不會清除最近從RAM讀取文件,所以我可能會看到緩存的影響,當我再次安裝它時,不是嗎? – jitihsk
它清除正在卸載的設備的緩衝區緩存。當它被裝回時,設備的內容未確定,以致於內核不能假定舊緩存仍然有效(並且無論如何,緩存已被卸載掉)。 –