Re: Développement: mmap anonyme

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Guilde ML
Sujet: Re: Développement: mmap anonyme
Salut !

Yves Martin wrote:
> En cherchant un problème de performance avec l'APC PHP, un collègue et moi
> essayons de comprendre pourquoi la "shared memory" provient d'un "mmap" issu
> de /dev/zero:
> http://www.php.net/manual/fr/apc.configuration.php#ini.apc.mmap-file-mask
>
> Est-ce le code C de l'APC qui implémente cette façon particulière du faire du mmap anonyme ?
>
> Ou alors est-ce l'implémentation sous-jacente du kernel Linux de l'option MAP_ANONYMOUS ?


Normalement quand tu fais un mmap anonyme, il n'y a pas de fichier
associé. C.f. man mmap :

   MAP_ANONYMOUS
     The mapping is not backed by any file; its contents are initial‐
     ized to zero.  The fd and offset arguments are ignored; however,
     some implementations require fd to be -1  if  MAP_ANONYMOUS  (or
     MAP_ANON)  is specified, and portable applications should ensure
     this.  The use of MAP_ANONYMOUS in conjunction  with  MAP_SHARED
     is only supported on Linux since kernel 2.4.


Ci-dessus l'argument fd est le descripteur de fichier.

D'ailleurs, si tu fais un strace d'un processus quelconque, tu verras
plein de mmap anonymes avec fd = -1.

Edgar.