假设我想优先考虑在内存压力较高的设备上运行的一些进程。这些进程是 UI 进程(特别是 Android),在此状态下运行速度非常慢。当我 grep 查找我的进程时
ps -eo min_flt,maj_flt,cmd
我可以看到我的主要页面错误非常高(UI 操作(例如打开新的 Android 活动)有数千个)。
如果将我的进程调整为较低的优先级(较高的优先级),我可以期望看到更少的严重页面错误吗?提高优先级应该会给它更多的 CPU 资源,但我不确定如果瓶颈是内存压力/页面错误,这是否会加快进程。
答案1
提高优先级应该会给它更多的 CPU 资源,但我不确定如果瓶颈是内存压力/页面错误,这是否会加快进程。
不会的。该nice
级别仅影响调度程序。
借助 root 权限,您可以mlockall(MCL_CURRENT|MCL_FUTURE)
将映射页面锁定到 RAM 中。在 Linux 上。我不知道Android上是否有这样的功能。
前段时间有补丁可以允许继承mlockall
状态exec
,这样就可以创建简单的包装程序来运行任何可执行文件mlockall
。https://lwn.net/Articles/308552/不幸的是,该补丁没有进入主线 Linux,因此您必须编辑 codez,或者如果它是脚本语言解释器,请找到一种对mlockall
.