GNU/Linux >> Tutoriales Linux >  >> Linux

Memoria compartida:shmget falla:no queda espacio en el dispositivo:¿cómo aumentar los límites?

Solución 1:

Usa ipcs -l para comprobar los límites actualmente en vigor, y ipcs -a y ipcs -m para ver lo que está en uso, para que pueda comparar la salida. Mira el nattch columna:¿hay segmentos sin procesos adjuntos que no se eliminaron cuando se cerraron los procesos (lo que normalmente significa que el programa se bloqueó)? ipcrm puede borrarlos, aunque si se trata de una máquina de prueba, un reinicio es más rápido (y se asegurará de que se recojan los cambios en los límites).

Los parámetros de su kernel parecen extraños. En particular, shmall es un recuento de páginas, no de bytes, y 4kB es el tamaño de página predeterminado (ejecute getconf PAGESIZE para comprobar lo que está utilizando). ¿Cuántos terabytes de RAM tienes?

Ahora, usted dice que obtiene alrededor de 32771 segmentos de memoria compartida, que también son alrededor de 32768 (o 2 a 15), lo que sugiere que un int de 16 bits firmado es el factor limitante. ¿Y qué kernel está ejecutando (ya que esto tendrá sus propios límites)? Los dos pueden estar relacionados.

Solución 2:

Resulta que shmmni está limitado a 32768 en el kernel:

#define IPCMNI 32768  /* <= MAX_INT limit for ipc arrays (including sysctl changes) */

en el archivo ...version.../include/linux/ipc.h .

A falta de volver a compilar el núcleo, ese es el límite estricto en la cantidad de segmentos de memoria compartida.


Linux
  1. ¿Cómo encontrar el módulo del kernel para un dispositivo dado?

  2. Ejemplos de comandos ipcs en Linux

  3. Cómo usar la memoria compartida con Linux en C

  4. ¿Cómo acceder (si es posible) al espacio del kernel desde el espacio del usuario?

  5. ¿Por qué la memoria compartida del kernel es 0 en Ubuntu 12.04?

Cómo verificar la memoria compartida de Linux usando el comando ipcs

Cómo aumentar la memoria y la CPU en la máquina Vagrant

Cómo aumentar el espacio de disco virtual de VM en VirtualBox

Cómo aumentar el espacio de disco virtual de la máquina virtual en VirtualBox y VMware

¿Cuánta RAM usa el kernel?

¿Cómo corregir los errores intermitentes No queda espacio en el dispositivo durante mv cuando el dispositivo tiene mucho espacio?