GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Shared Memory:shmget schlägt fehl:Kein Speicherplatz mehr auf dem Gerät – wie kann man die Limits erhöhen?

Lösung 1:

Verwenden Sie ipcs -l um die tatsächlich geltenden Grenzwerte zu überprüfen, und ipcs -a und ipcs -m um zu sehen, was verwendet wird, damit Sie die Ausgabe vergleichen können. Sehen Sie sich die nattch an Spalte:Gibt es Segmente ohne angehängte Prozesse, die nicht entfernt wurden, als Prozesse beendet wurden (was normalerweise bedeutet, dass das Programm abgestürzt ist)? ipcrm können sie löschen, obwohl, wenn dies eine Testmaschine ist, ein Neustart schneller ist (und sicherstellt, dass Ihre Änderungen an den Grenzwerten übernommen werden).

Ihre Kernel-Parameter scheinen seltsam. Insbesondere shmall ist eine Anzahl von Seiten, nicht Bytes, und 4 KB ist die Standardseitengröße (führen Sie getconf PAGESIZE aus um zu überprüfen, was Sie verwenden). Wie viel Terabyte RAM hast du?

Jetzt sagen Sie, Sie erhalten ungefähr 32771 gemeinsam genutzte Speichersegmente, was auch ungefähr 32768 (oder 2 hoch 15) entspricht, was darauf hindeutet, dass ein 16-Bit-Ganzzahl mit Vorzeichen der begrenzende Faktor ist. Und welchen Kernel verwenden Sie (da dieser seine eigenen Grenzen hat)? Die beiden können verwandt sein.

Lösung 2:

Es stellt sich heraus, dass shmmni im Kernel auf 32768 begrenzt ist:

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

in der Datei ...version.../include/linux/ipc.h .

So kurz vor dem Neukompilieren des Kernels, das ist die harte Grenze für die Anzahl der gemeinsam genutzten Speichersegmente.


Linux
  1. So verwenden Sie Shared Memory mit Linux in C

  2. Wie greife ich (wenn möglich) auf den Kernel-Space aus dem User-Space zu?

  3. Gemeinsamer Linux-Speicher:shmget() vs. mmap()?

  4. Kein Speicherplatz auf Gerät

  5. Wie viel RAM verwendet der Kernel?

So überprüfen Sie den gemeinsam genutzten Linux-Speicher mit dem ipcs-Befehl

So erhöhen Sie Speicher und CPU auf Vagrant Machine

So erhöhen Sie den virtuellen Speicherplatz der VM auf VirtualBox

So erhöhen Sie den virtuellen Speicherplatz der VM auf VirtualBox und VMware

AWS EC2 – Kein Speicherplatz mehr auf dem Gerät

Wie überprüfe ich, wie viel freier Speicherplatz auf einem Gerät verbleibt, um eine Partition zu erstellen?