当前位置:  开发笔记 > 前端 > 正文

我可以告诉Linux不要换掉特定进程的内存吗?

如何解决《我可以告诉Linux不要换掉特定进程的内存吗?》经验,为你挑选了2个好方法。

有没有办法告诉Linux它不应该将特定进程的内存交换到磁盘?

它是一个Java应用程序,所以理想情况下我希望通过命令行实现此目的.

我知道你可以将全局swappiness设置为0,但这是明智的吗?



1> Thomas Kamme..:

您可以通过Linux下的mlockall(2)系统调用来完成此操作; 这将适用于整个过程,但请阅读您需要传递的参数.

你真的需要把整个东西拉进核心吗?如果它是一个java应用程序,你可能会将整个JVM锁定在内核中.我不知道这样做的命令行方法,但你可以写一个简单的程序来fork调用mlockall,然后调用exec.

您还可以查看madvise(2)中的某个访问模式通知是否满足您的需求.如果VM子系统适用于您,可以更好地解决VM子系统有关更好的分页策略的问题.

注意很久以前现在在SunOS下,有一种类似于madvise的机制叫做vadvise(2).


["内存锁不是由fork(2)创建的子进程继承的,并且在execve(2)期间或进程终止时自动删除(解锁)."](http://www.kernel.org/doc/ man-pages/online/pages/man2/mlock.2.html) - fork/mlock/exec方法不起作用

2> Matthew Buck..:

如果您希望更改进程的swappiness,请将其添加到cgroup并设置该cgroup的值:

https://unix.stackexchange.com/questions/10214/per-process-swapiness-for-linux#10227

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有