【发布时间】:2013-05-07 06:33:36
【问题描述】:
这是我基于 Linux2.6.32.12 的系统:
1 它包含20个占用大量usr cpu的进程
2 需要以 100M/s 的速率将数据写入磁盘,这些数据最近不会被使用。
我的期望:
它可以稳定运行,磁盘 I/O 不会影响我的系统。
我的问题:
一开始,系统按我想的那样运行。但随着时间的推移,Linux 会为磁盘 I/O 缓存大量数据,从而导致物理内存减少。最后,内存不足,Linux 会换入/换出我的进程。大量cpu时间用于I/O会导致I/O问题。
我的尝试:
我尝试通过每次写入大块时“fsync”来解决问题。但是物理内存仍在减少,而缓存增加。
这里怎么停止页面缓存,对我没用
更多信息:
当 Top 显示空闲 46963m 时,一切正常,包括 cpu %wa 低,vmstat 显示没有 si 左右。
当 Top 显示 free 273m 时,%wa 太高了,这会影响我的进程,而 vmstat 显示很多 si 等等。
【问题讨论】:
-
为什么这对你很重要?阅读linuxatemyram.com
-
根据 linuxatemyram.com,“如果应用程序需要更多内存,他们只需从磁盘缓存中取回。他们不会开始交换。”
但在我的情况下,我观察到交换。 -
您为什么认为改变这种行为会提高整体性能?
-
如果没有缓存,进程将始终停留在物理内存中。那么没有换入/换出将保持低 I/O。