使用Linux / proc / meminfo来避免通过交换来重载服务器

我试图find一个使用的度量标准,告诉我如果启动另一个进程估计使用N个字节的内存将会对系统性能产生不利影响。

我知道/proc/meminfo字段MemFreeBuffersCached可以添加在一起,以提供程序可用的总内存。 但是,我宁愿不挤出实际使用效果良好的caching(工作负载导致磁盘热点)。

/proc/meminfoActive条目看起来好像可以与MemTotal进行比较,以确定有多less内存可用(通过交换闲置的东西或者首先释放),但是我一直没有find有关Active信息,所以我不知道。

我是否应该Active内存尽可能接近MemTotal而不必像我可以pipe理的一样进行操作?

有没有其他方法来估计运行另一个进程的内存行为?

经过实验,似乎主动记忆是一个很好的指标。

我们观察到,随着空闲内存降到零,当非活动内存开始被换出(对于我们的系统,每秒大约10到100秒),非常低频率的页面输出将会发生。 实际的交换会导致每秒钟跳出10到100次。 我们最终select每秒1000页作为截止点,以区分不活动的内存和实际的性能影响交换。

我们没有太多的运气将活动内存推到100%,但这主要是由于我们正在做的工作的形状(我们首先被CPU限制)。 我们决定,对于我们的工作量来说,任何超过75%的内存Active都意味着我们不应该再启动一个新的进程,尽pipe我们的负载限制和产生新进程的速度通常是实际上限制了我们进程创build的东西,重要的警告。