2009-06-10 9 views
13

De acuerdo con la página de manual, "-l" en ulimit significa "El tamaño máximo que se puede bloquear en la memoria". ¿Qué significa esta oración, exactamente? ¿Cómo puede afectar los programas en ejecución?¿Qué significa "ulimit -l"?

Respuesta

12

La memoria que está bloqueada puede no ser paginada, esto reduce la cantidad de memoria disponible para otros procesos. Esta configuración limita la cantidad de memoria que se puede bloquear.

+0

significa que si lo ajusto a 100M y luego se inicia el programa (digamos un programa java), lo mantendrá en la memoria y no se enviará a la página? –

+1

No exactamente. El programa tendría que bloquear la memoria, y esto es un límite para el usuario, no para el programa, por lo que otros programas podrían bloquear la memoria y usar parte de la asignación. –

+4

El ulimit solo limita la cantidad que puede bloquear. Debe llamar a mlock o mlockall para que esté realmente bloqueado. –

8

Esto limita la cantidad de memoria que puede hacer que no intercambiable con mlock

La página de manual setrlimit dice:

El número máximo de bytes de memoria que pueden ser bloqueados en la memoria RAM. En efecto, este límite se redondea al múltiplo más cercano del tamaño de página del sistema. Este límite afecta a mlock (2) y mlockall (2) y a la operación mmap (2) MAP_LOCKED. Desde Linux 2.6.9 también afecta a la operación shmctl (2) SHM_LOCK, donde establece un máximo en los bytes totales en los segmentos de memoria compartida (ver shmget (2)) que puede ser bloqueada por la identificación de usuario real del proceso de llamada. Los bloqueos shmctl (2) SHM_LOCK se contabilizan por separado de los bloqueos de memoria por proceso establecidos por mlock (2), mlockall (2) y mmap (2) MAP_LOCKED; un proceso puede bloquear bytes hasta este límite en cada una de estas dos categorías. En los kernels de Linux anteriores a la 2.6.9, este límite controlaba la cantidad de memoria que podía ser bloqueada por un proceso privilegiado. Desde Linux 2.6.9, no hay límites en la cantidad de memoria que un proceso con privilegios puede bloquear, y este límite en cambio gobierna la cantidad de memoria que un proceso no privilegiado puede bloquear.