交换性是绝对的还是相对于内存大小的?

交换性是绝对的还是相对于内存大小的?

物理内存中保留的虚拟内存量是否取决于物理内存大小?
假设我的 swappiness 参数为 60,8GB 中的 4GB 填充了应用程序数据,另外 4GB 填充了文件缓存。
在相同的工作负载、相同的交换参数、但只有 4GB 物理内存的情况下,是否所有 4GB 都被应用程序数据填满或更少?

答案1

它是成比例的,根本不基于内存大小。代码位于mm/vmscan.c.在检查了一些病理情况后,例如完全超出交换空间(然后仅扫描文件支持的页面作为从内存中逐出的候选页面),几乎耗尽内存(将同等地扫描文件支持的内存和匿名内存) ),或者页面缓存变得非常大并且充满了非活动页面(只有文件支持的页面将被扫描),我们点击这个:

/*
 * With swappiness at 100, anonymous and file have the same priority.
 * This scanning priority is essentially the inverse of IO cost.
 */
anon_prio = swappiness;
file_prio = 200 - anon_prio;

根据内存扫描器最近在释放每种类型内存方面所取得的成功,这些优先级会得到进一步调整。然后按比例扫描每种类型的内存,最近未使用的页面将被逐出。

最重要的是,这完全取决于工作量。 swappiness 值告诉系统为尝试换出匿名内存分配什么优先级,但内存访问模式将决定实际发生的情况。

相关内容