[gull] linux sur plateforme AMD64

Marc SCHAEFER schaefer at alphanet.ch
Fri Jul 13 11:30:38 CEST 2007


On Thu, Jul 12, 2007 at 09:39:45PM +0200, Christophe DONZELOT wrote:
> Le support highmem est activé pour prendre en charge les 8 Go de RAM

Autre piste pour la place perdue (à mon avis largement moins probable)

Normalement, le support `highmem' active aussi 2-3 trucs bizarres comme
p.ex. le fait que la mémoire `haute' (argh! MS-DOS is back) ne peut être
utilisée pour le DMA.

Une technique communément employée est les `bounce buffers', qui
consiste à faire des I/O en adressage 32 bits puis de copier les
données dans l'espace processus concerné (avec une perte de performance,
mais négligeable par rapport à l'avantage d'avoir plus de mémoire).

Donc plus de mémoire peut signifier plus de place prise par les `bounce
buffers', et moins de performance.

Je ne sais pas si c'est toujours la même technique qui est employée en
2.6; par contre, il me semble évident qu'en PCI-32 bits, l'adressage
est effectivement limité. Et contrairement à d'autres architectures, le
PC n'a jamais mis de TLB/MMU du côté I/O.

Cet article explique qu'en 2.6 il n'y a plus de bounce buffers pour
les périphériques qui peuvent adresser toute la mémoire; mais
symétriquement j'ai trouvé des références de pilotes (p.ex. ATA) qui
les utilisent encore ...

   http://www.linuxjournal.com/article/6530

malgré tout, 2 GB d'un coup me semblerait un peu énorme (surtout que les
bounce buffers doivent être sous 1 GB), donc la piste du buffer
cache / ventry-inode cache me semble plus logique

PS: sauf erreur, le support `bigmem' est autre chose que le support
    `highmem': bigmem permet de faire des allocations atomiques de
    taille élevée en 2.4




More information about the gull mailing list