【发布时间】:2010-11-01 18:10:51
【问题描述】:
根据手册页,ulimit 中的“-l”表示“可以锁定到内存中的最大大小”。这句话到底是什么意思?它如何影响正在运行的程序?
【问题讨论】:
根据手册页,ulimit 中的“-l”表示“可以锁定到内存中的最大大小”。这句话到底是什么意思?它如何影响正在运行的程序?
【问题讨论】:
锁定的内存可能不会被调出 - 这会减少可用于其他进程的内存量。此设置限制了可以锁定的内存量。
【讨论】:
这限制了您可以使用mlock 设置不可交换的内存量
setrlimit 联机帮助页说:
可以锁定到 RAM 中的最大内存字节数。实际上,此限制向下舍入到最接近的系统页面大小倍数。此限制影响 mlock(2) 和 mlockall(2) 以及 mmap(2) MAP_LOCKED 操作。从 Linux 2.6.9 开始,它还影响 shmctl(2) SHM_LOCK 操作,在该操作中,它设置了共享内存段(请参阅 shmget(2))中可能被调用进程的真实用户 ID 锁定的总字节数的最大值。 shmctl(2) SHM_LOCK 锁与由 mlock(2)、mlockall(2) 和 mmap(2) MAP_LOCKED 建立的每进程内存锁分开计算;进程可以在这两个类别中的每一个中将字节锁定到此限制。在 2.6.9 之前的 Linux 内核中,此限制控制了特权进程可以锁定的内存量。从 Linux 2.6.9 开始,对特权进程可以锁定的内存量没有限制,而这个限制控制了非特权进程可以锁定的内存量。
【讨论】: