種子種子是否會影響硬碟 RAM 快取?

種子種子是否會影響硬碟 RAM 快取?

我下載了很多 torrent 文件,當我為它們做種時,我注意到啟動瀏覽器時速度很慢,並且硬碟活動指示燈亮起。通常,當我啟動程式時,它會緩存在 RAM 中,並且再次啟動它的速度非常快,而且我有 3 GB 的 RAM,所以通常它幾乎永遠保持快取狀態。但是,當我的 torrent 用戶端播種時,我運行的程式一小時後似乎不再緩存在 RAM 中。

我在想可能是因為 torrent 客戶端執行的磁碟讀取被快取並最終填滿了 RAM。但我認為它們沒有必要,因為它們只被閱讀一次,並且不太可能很快就會再次閱讀。

所以我的問題是 - 這是我的想法嗎?我可以嘗試編輯程式的原始程式碼。

答案1

這將完全取決於您使用的 torrent 程式。他們中的一些人可能會有不同的行為方式。

但是,是的,可以繞過系統緩存,因為這是一個常見問題。

如果您願意編輯原始程式碼(也許這應該在另一個 StackExchange 上..),請找到 torrent 程式從磁碟開啟檔案的位置。最有可能的是 open() 呼叫。如果它是 fdopen() 那麼它正在使用 stdlib 並且我不確定 stdlib 支援直接 I/O。

此系統呼叫最多需要三個參數,第一個是檔案名,第二個是標誌,第三個是可選的檔案建立遮罩。旗幟可能會像O_RDWR現在這樣。 「不使用系統快取」的標誌是O_DIRECT,您可以透過 分隔標誌來組合標誌|

因此,在這種情況下,flags 參數的結果將是O_RDWR | O_DIRECT。只需新增標誌即可。

有關更多信息,請參閱

man 2 open

答案2

不要關閉瀏覽器:)

I/O 快取(僅用於讀取,而不是寫入檔案)無論過多,都不會導致程式正在使用的頁面被換出。

相關內容