Outils pour utilisateurs

Outils du site


tech:notes_ipc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tech:notes_ipc [2025/03/24 15:06] – créée - modification externe 127.0.0.1tech:notes_ipc [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon Hardware CPU}}
 +
 +# Notes IPC shared memory
 +
 +Voir :
 +* http://tvaira.free.fr/bts-sn/multitache/cours-multitache-3.pdf
 +* https://www.youtube.com/watch?v=9OZofG500Js  Processus et Sémaphores Chaker El Amrani
 +* https://gerardnico.com/linux/shared_memory
 +* http://www.thegeekstuff.com/2010/08/ipcs-command-examples/
 +* http://www.postgresql.org/docs/current/static/kernel-resources.html
 +* http://www.postgresql.org/docs/9.1/static/kernel-resources.html#SYSVIPC
 +* http://sysnet-adventures.blogspot.com/2014/02/omreport-fails-object-not-found.html
 +* http://brunogarcia.chez.com/Unix/Docs/IPC.html
 +* `ipcrm` / `ipcmk`
 +
 +
 +Voir aussi :
 +* https://fr.wikipedia.org/wiki/Situation_de_comp%C3%A9tition
 +
 +~~~bash
 +#Total de la RAM
 +total=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
 +
 +# 90% de la mémoire physique max
 +ratio=0.9
 +
 +# On applique le ratio et on converti en pages de 4096
 +shmall=$(echo $total/4096*$ratio+1 | bc)
 +shmmax=$(echo $total*$ratio | bc)
 +
 +# On arrondi la valeur
 +shmall=$(echo $shmall | sed -e 's/\..*$//')
 +shmmax=$(echo $shmmax | sed -e 's/\..*$//')
 +
 +echo $shmall > /proc/sys/kernel/shmall
 +echo $shmmax > /proc/sys/kernel/shmmax
 +
 +# ipcs -lm
 +#################
 +
 +
 +#################
 +# Overcommit memory ?
 +# sysctl -w vm.overcommit_memory=2
 +
 +# Page size ?
 +# getconf PAGE_SIZE
 +# cat /proc/sys/kernel/shmmni
 +#################
 +
 +#### SEMAPHORES
 +# http://www.postgresql.org/docs/9.1/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS
 +# SEMMNS is the second parameter in output of cat /proc/sys/kernel/sem (default value 32000) 
 +# SEMMNI is the last parameter there, default value 128 - this is the limiting factor - SEMMNI must be at least at least ceil(max_connections / 16)
 +
 +# http://www.puschitz.com/TuningLinuxForOracle.shtml#TheSEMMNSParameter
 +# http://www.postgresql.org.es/node/229
 +####
 +~~~
 +
 +Connaître la PAGE_SIZE \\
 +Voir https://en.wikipedia.org/wiki/Page_%28computer_memory%29
 +~~~bash
 +getconf PAGE_SIZE
 +cat /proc/sys/kernel/shmmni
 +~~~
 +
 +~~~
 +$ ipcs
 +
 +------ Message Queues --------
 +key        msqid      owner      perms      used-bytes   messages    
 +
 +------ Shared Memory Segments --------
 +key        shmid      owner      perms      bytes      nattch     status      
 +0x0052e2c1 32768      postgres   600        56         20                      
 +0x00000000 17924097   wouter     600        33554432            dest         
 +0x00000000 49446914   wouter     600        524288              dest         
 +[...]
 +
 +$ ipcs -i 17924097 -m -p
 +
 +Shared memory Segment shmid=17924097
 +uid=1000    gid=1000    cuid=1000   cgid=1000
 +mode=01600  access_perms=0600
 +bytes=33554432  lpid=3808   cpid=1457   nattch=2
 +att_time=Fri Jul  3 10:43:28 2015  
 +det_time=Fri Jul  3 10:43:28 2015  
 +change_time=Fri Jul  3 10:03:00 2015 
 +~~~
 +## Debug
 +
 +Source : http://www.makelinux.net/alp/035
 +
 +The ipcs command provides information on interprocess communication facilities, including shared segments. Use the -m flag to obtain information about shared memory. For example, this code illustrates that one shared memory segment, numbered 1627649, is in use:
 +
 + 
 +~~~
 +% ipcs -m 
 +
 + 
 +
 +------ Shared Memory Segments -------
 +
 +key       shmid     owner     perms     bytes     nattch    status 
 +
 +0x00000000 1627649   user    640       25600     
 +~~~
 +
 +
 +If this memory segment was erroneously left behind by a program, you can use the ipcrm command to remove it.
 +
 +~~~
 +% ipcrm shm 1627649 
 +~~~
 +
 +Periodically remove allocated semaphores which belong to the user running the plugin. This can be achieved like this (example for the user "nrpe")\\
 +Source : http://folk.uio.no/trondham/software/check_openmanage.html
 +~~~bash
 +ipcrm $(ipcs -s | awk '/nrpe/ {print "-s ",$2}')
 +~~~
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki