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