播种种子会影响硬盘 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。只需添加新的标志即可。

有关详细信息,请参阅For more information, see

man 2 open

答案2

不要关闭浏览器:)

I/O 缓存(仅用于读取,而不是写入文件)无论多么过多,都不会导致程序正在使用的页面被换出。

相关内容