Création d'objets de mémoire partagée avec une taille de segment de 1 To

La taille de segment de 1 To améliore les performances des processus qui utilisent de grandes régions de mémoire partagée. Cette prise en charge est disponible pour les applications 64 bits qui utilisent des grandes pages de 16 Mo et n'utilisent pas de mémoire partagée étendue.

Si une application est qualifiée pour utiliser une taille de segment de 1 To, le système d'exploitation AIX crée la région de mémoire partagée avec des segments de 1 To. En utilisant les paramètres réglables lgpg_size, lgpg_regions, v_pinshmet hugeseg_shm_mode de la commande vmo . Le système doit disposer de suffisamment de grandes pages de 16 Mo pour contenir la totalité de la région de mémoire partagée qui doit être créée.
vmo -o lgpg_regions=<number of pages> -o lgpg_size=16M
vmo -o v_pinshm=1
vmo -o hugeseg_shm_mode=1
Les applications peuvent demander une taille de segment de 1 To à l'aide de l'indicateur SHM_HGSEG de la sous-routine shmget lors de la création d'objets de mémoire partagée. Pour définir ce type de paramètre, le paramètre réglable hugeseg_shm_mode de la commande vmo doit être défini sur 1. L'exemple suivant illustre la syntaxe de la sous-routine shmget :

shmget(key, size, shmflag | SHM_HGSEG | SHM_LGPAGE | SHM_PIN);
Vous pouvez également utiliser la sous-routineshmctl () (comme illustré dans l'exemple suivant) pour demander des pages de 16 Mo une fois la sous-routine shmget terminée, et le système d'exploitation AIX commence à créer les régions de mémoire partagée avec des segments 1TB .
struct shmid_ds shminfo = { 0 };
int shmid;
shmid = shmget(key, size, shmflag);
shminfo.shm_pagesize = 16M;
shmctl(shmid, SHM_PAGESIZE, &shminfo);
Le système d'exploitation AIX peut utiliser de manière autonome une taille de segment de 1 To sans aucune modification de l'application. Cette configuration peut être implémentée en exportant la variable d'environnement VMM_CNTRL avec le mot clé SHM_AUTO_1TB et en utilisant le paramètre réglable hugeseg_shm_mode de la commande vmo . Définissez le paramètre réglable et la variable d'environnement à l'aide de la commande suivante:
vmo -o hugeseg_shm_mode=1
export VMM_CNTRL=SHM_AUTO_1TB=ON
Le système d'exploitation AIX tente alors d'utiliser une taille de segment de 1 To pour tous les processus exécutés dans cet environnement. Le paramètre réglable hugeseg_shm_mode peut également être défini sur un paramètre de promotion global.
vmo -o hugeseg_shm_mode=2
Cette opération tente d'utiliser une taille de segment de 1 To pour tous les processus sans avoir à définir la variable d'environnement ou à l'aide de l'indicateur SHM_HGSEG .
Remarque: Il s'agit d'une opération recommandée. Si le système d'exploitation AIX ne peut pas allouer une région de mémoire partagée avec une taille de segment de 1TB , l'allocation est créée à l'aide d'une taille de segment différente.