GNU/Linux >> Linux Esercitazione >  >> Linux

Memoria condivisa:shmget non riesce:spazio esaurito sul dispositivo:come aumentare i limiti?

Soluzione 1:

Usa ipcs -l per verificare i limiti effettivamente in vigore, e ipcs -a e ipcs -m per vedere cosa è in uso, in modo da poter confrontare l'output. Guarda il nattch colonna:ci sono segmenti senza processi collegati che non sono stati rimossi quando i processi sono terminati (il che normalmente significa che il programma si è bloccato)? ipcrm può cancellarli, anche se se si tratta di una macchina di prova, un riavvio è più rapido (e assicurerà che le modifiche ai limiti vengano rilevate).

I tuoi parametri del kernel sembrano strani. In particolare, shmall è un conteggio di pagine, non di byte, e 4kB è la dimensione predefinita della pagina (esegui getconf PAGESIZE per controllare cosa stai usando). Quanti terabyte di RAM hai?

Ora, dici di ottenere circa 32771 segmenti di memoria condivisa, che è anche circa 32768 (o 2 su 15), il che suggerisce che un int a 16 bit con segno è il fattore limitante. E quale kernel stai eseguendo (poiché questo avrà i suoi limiti)? I due potrebbero essere correlati.

Soluzione 2:

Si scopre che shmmni è limitato a 32768 nel kernel:

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

nel file ...version.../include/linux/ipc.h .

Così a corto di ricompilare il kernel, questo è il limite massimo per il numero di segmenti di memoria condivisa.


Linux
  1. Bash:Nessuno spazio rimasto sul dispositivo

  2. Come utilizzare la memoria condivisa con Linux in C

  3. Memoria condivisa di Linux:shmget() vs mmap()?

  4. Spazio esaurito sul dispositivo

  5. Perché la memoria condivisa del kernel è 0 su Ubuntu 12.04?

Come controllare la memoria condivisa di Linux usando il comando ipcs

Come aumentare la memoria e la CPU sulla macchina Vagrant

Come aumentare lo spazio su disco virtuale della VM su VirtualBox

Come aumentare lo spazio su disco virtuale VM su VirtualBox e VMware

Come posso verificare quanto spazio libero è rimasto su un dispositivo per creare una partizione

Quanta RAM utilizza il kernel?