GNU/Linux >> Tutoriels Linux >  >> Linux

Mémoire partagée :échec de shmget :plus d'espace disponible sur l'appareil – comment augmenter les limites ?

Solution 1 :

Utilisez ipcs -l vérifier les limites effectivement en vigueur, et ipcs -a et ipcs -m pour voir ce qui est utilisé, afin que vous puissiez comparer la sortie. Regardez le nattch colonne :y a-t-il des segments sans processus attachés qui n'ont pas été supprimés lorsque les processus se sont terminés (ce qui signifie normalement que le programme a planté) ? ipcrm peut les effacer, bien que s'il s'agit d'une machine de test, un redémarrage est plus rapide (et s'assurera que vos modifications des limites sont prises en compte).

Vos paramètres de noyau semblent étranges. En particulier, shmall est un nombre de pages, pas d'octets, et 4 Ko est la taille de page par défaut (exécutez getconf PAGESIZE pour vérifier ce que vous utilisez). Combien de téraoctets de RAM avez-vous ?

Maintenant, vous dites que vous obtenez environ 32771 segments de mémoire partagée, ce qui représente également environ 32768 (ou 2 sur 15), ce qui suggère qu'un int 16 bits signé est le facteur limitant. Et quel noyau utilisez-vous (car cela aura ses propres limites) ? Les deux peuvent être liés.

Solution 2 :

Il s'avère que shmmni est limité à 32768 dans le noyau :

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

dans le fichier ...version.../include/linux/ipc.h .

Donc, à moins de recompiler le noyau, c'est la limite stricte du nombre de segments de mémoire partagée.


Linux
  1. Comment créer ou augmenter l'espace d'échange sous Linux

  2. Comment trouver le module du noyau pour un appareil donné ?

  3. Comment augmenter l'espace d'échange sous Linux

  4. Comment utiliser la mémoire partagée avec Linux en C

  5. Comment mmapper un tampon du noyau Linux à l'espace utilisateur?

Comment vérifier la mémoire partagée Linux à l'aide de la commande ipcs

Comment augmenter la mémoire et le processeur sur une machine vagabonde

Comment augmenter l'espace disque virtuel de la machine virtuelle sur VirtualBox

Exemples de commandes ipcs sous Linux

Bash :il ne reste plus d'espace sur l'appareil

Comment augmenter l'espace disque virtuel de la machine virtuelle sur VirtualBox et VMware