【问题标题】:What does "ulimit -l" mean?“ulimit -l”是什么意思?
【发布时间】:2010-11-01 18:10:51
【问题描述】:

根据手册页,ulimit 中的“-l”表示“可以锁定到内存中的最大大小”。这句话到底是什么意思?它如何影响正在运行的程序?

【问题讨论】:

    标签: linux ulimit


    【解决方案1】:

    锁定的内存可能不会被调出 - 这会减少可用于其他进程的内存量。此设置限制了可以锁定的内存量。

    【讨论】:

    • 这是否意味着如果我将其设置为 100M 然后启动程序(比如说一个 java 程序),它将保留在内存中并且不会分页?
    • 不完全是。然后程序必须锁定内存,这是对用户的限制,而不是每个程序,因此其他程序可以锁定内存并使用一些分配
    • ulimit 仅限制您可以锁定的数量。您需要调用 mlock 或 mlockall 才能真正锁定它。
    【解决方案2】:

    这限制了您可以使用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 开始,对特权进程可以锁定的内存量没有限制,而这个限制控制了非特权进程可以锁定的内存量。

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 2013-10-06
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2011-01-28
      • 2015-03-07
      相关资源
      最近更新 更多