gpt4 book ai didi

linux - Linux 将进程内存从 RAM 交换到交换文件的确切条件是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:06:39 25 4
gpt4 key购买 nike

我的服务器有 8Gigs 的 RAM 和 8Gigs 配置的交换文件。我正在运行内存密集型应用程序。这些应用程序具有峰值负载,在此期间我们发现交换使用量增加。使用了大约 1 GIG 的交换空间。

我有另一台服务器,有 4G RAM 和 8G 交换以及类似的内存密集型应用程序在上面运行。但是这里的交换使用量可以忽略不计。大约 100 MB。

我想知道什么是 确切 条件或粗略公式 Linux 将基于哪些条件换出 RAM 中的进程内存到交换文件。我知道它基于交换因素。它还有什么根据?交换文件大小?任何指向解释这一点的 Linux 内核文档/源代码的指针都会很棒。

最佳答案

我看到很多人发布了对此功能的主观解释。希望这里有一个更完整的答案。

在 2.6.28 后的拆分 LRU 中,Linux swappiness 是一个乘数,用于任意修改计算的分数,以确定两个 LRU 中建立的压力。

因此,例如,在一个没有可用内存的系统上 - 您现有内存的值(value)是根据多少内存被列为“事件”的比率和页面被提升的频率来衡量的落入非活跃名单后转为活跃。

在活跃和不活跃之间有许多页面升级/降级的 LRU 被大量使用。

通常情况下,文件支持的存储在内存用完时更便宜且更安全,并且会自动获得 200 的修饰符(这使得文件支持的内存比交换支持的内存(值为 0)的值(value)低 200 倍)它乘以这个分数。

swappiness 所做的是通过减去您给文件内存的 swappiness 数字(默认 60)并将您提供的 swappiness 值作为乘数添加到 anon 内存来修改此值。因此,默认的 swappiness 使匿名内存比文件内存有值(value) 80 倍(文件 200-60,匿名 0+60)。因此,在用完所有内存的典型 Linux 系统上,页面缓存必须比匿名内存活跃 80 倍才能换出匿名内存以支持页面缓存。

如果您将 swappiness 设置为 100,这会为匿名提供 100 的修饰符,为文件内存提供 100 (200 - 100) 的修饰符,从而使两个 LRU 具有相同的权重。因此,在需要页面缓存的文件繁重的系统上,提供匿名内存不如页面缓存活跃,然后匿名内存将交换到磁盘以为额外的页面缓存腾出空间。

关于linux - Linux 将进程内存从 RAM 交换到交换文件的确切条件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com