有没有办法告诉 Linux 它不应该将特定进程的内存换出到磁盘?
它是一个 Java 应用程序,所以理想情况下我希望有一种方法可以从命令行执行此操作。
我知道你可以将 global swappiness 设置为 0,但这明智吗?
最佳答案
您可以通过 mlockall(2) 进行此操作Linux下的系统调用;这将适用于整个过程,但请阅读您需要传递的参数。
你真的需要把整个事情都拉到核心吗?如果它是一个 java 应用程序,您可能会将整个 JVM 锁定在内核中。我不知道执行此操作的命令行方法,但您可以编写一个简单的程序来调用 fork
,调用 mlockall
,然后调用 exec
.
您还可以查看 madvise(2) 中的访问模式通知之一。满足您的需求。如果它适用于您,建议 VM 子系统使用更好的分页策略可能会更好。
请注意,很久以前现在在 SunOS 下,有一个类似于 madvise 的机制,称为 vadvise(2) .
关于linux - 我可以告诉 Linux 不要换出特定进程的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578137/