【发布时间】:2010-11-27 01:18:17
【问题描述】:
我有一个 64 位 Linux (SUSE 10) 双处理器。当我运行我的进程时,它使用了大约 4 G 的虚拟内存。只有3G是常驻内存。剩下9G左右内存是免费的。如何将这 1 G 也加载到 RAM 中?为什么它仍在交换空间中,为什么当所有 RAM 都可用时内核无法将其加载到 RAM 中。
拉胡尔
【问题讨论】:
我有一个 64 位 Linux (SUSE 10) 双处理器。当我运行我的进程时,它使用了大约 4 G 的虚拟内存。只有3G是常驻内存。剩下9G左右内存是免费的。如何将这 1 G 也加载到 RAM 中?为什么它仍在交换空间中,为什么当所有 RAM 都可用时内核无法将其加载到 RAM 中。
拉胡尔
【问题讨论】:
内核可以将数据加载到内存中。但是,当它们不被使用时,它会选择将它们写到交换文件中。
如果您绝对想要内存中的数据,您应该关闭所有交换文件(使用 swapoff(8)),或者使用 mlock 或 mlockall 将特定页面锁定到内存中。
【讨论】: