Re: Développement: mmap anonyme

Page principale

Répondre à ce message
Auteur: Yves Martin
Date:  
À: Guilde ML
Sujet: Re: Développement: mmap anonyme
----- "Edgar Bonet" <guilde@???> a écrit :

> 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.


Salut,

Dans mon cas, nous trouvons des entrées /proc/PID/maps
avec un inode sur /dev/zero marqués comme "(deleted)"

La question que je me pose: est-ce que toutes les pages
sont allouées dès l'appel à mmap sur le /dev/zero ?

J'imagine que le code a été écrit ainsi pour des raisons de
portabilité... mais c'est quand même étrange comme procédé.

--
Yves Martin