Memória: pq a conta não bate?

Iniciado por crixtiano, 05 de Junho de 2007, 12:54

tópico anterior - próximo tópico

crixtiano

Olá amigos do fórum.

Por favor, me ajudem a resolver um mistério.

Comprei recentemente um notebook Aces Aspire 5000 64bits com 512MB RAM. A placa de vídeo eu posso configurá-la na BIOS para que ela ocupe 32MB ou 64MB de RAM. Então eu configurei para 32MB, la na BIOS, a memória de vídeo.

Dentro do linux, eu configurei o xserver-xorg para usar os 32MB de vídeo da placa explicitamente:

Citar
Section "Device"
        Identifier      "Silicon Integrated Systems [SiS] 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter"
        Driver          "sis"
        BusID           "PCI:1:0:0"
        VideoRam        32768
EndSection

A propriedade VideoRam acima foi configurada em Kb por exigência do prório xorg.conf

Note que: 32768Kb =  32Mb x 1024 

Bem, então, pedi para ver a mamória do meu sistema:

Citar
$ free -m
             total       used       free     shared    buffers     cached
Mem:           403        397          5          0          5        139
-/+ buffers/cache:        253        149
Swap:         1090         38       1052

Note que temos apenas 403, enquanto pelas minhas contas deveria ser mais, algo mais ou menos assim:

Citar
512MB - (placa de vídeo - uns 32MB) - (um pouco p/ o kernel - uns 10MB) = algo perto de 470MB

Mas então pq o "free -m" está listando apenas 403MB ? A diferença aí seria de algo em torno de uns 70MB a 80MB (dependendo do que o kernel gaste, supus 10MB, mas pode ser menos).

Então, dei o comando dmesg no terminal para verificar o log do sistema e eis que me foi revelado:

Citar
$ dmesg |grep Memory
[   11.437955] Memory: 405760k/490432k available (2217k kernel code, 84284k reserved, 1162k data, 304k init)

Ou seja, como vocês podem ver, o dmesg me diz que tenho 490432Kb de memória total, o que em MB dá algo perto de 478MB (um número próximo dos 470MB que eu havia sugerido. O que indica que 32MB realmente devem estar sendo utilizados para a placa de vídeo, assim como diz a BIOS.

Ok, mas o problema é que os 70 a 80MB de diferença ainda continumam, e na mesma linha, a saída do dmesg acima me indica que 84284Kb estão reservados, ou seja 82MB, que é justamente quase a diferença que está faltando nas minhas contas.

A pergunta é então: esses quase 80MB estão reservados para o que? Como é definido esse valor?

Obrigado,

Cristiano Meira Magalhães

p.s.: Por favor, se alguém tiver algum comentário que corrija alguma interpretação minha, ficarei muito grato.

p.s. 2: somente para constar, aqui a saída do "lshw" para a memória e placa de vídeo do sistema:

Memória

Citar
*-memory:0
          description: System Memory
          physical id: 10
          slot: System board or motherboard
     *-memory:1 UNCLAIMED
          physical id: 1
        *-bank UNCLAIMED
             description: DIMM DDR [empty]
             physical id: 0
             slot: DIMM1
     *-memory:2 UNCLAIMED
          physical id: 2
        *-bank UNCLAIMED
             description: DIMM DDR Synchronous
             physical id: 0
             slot: DIMM2
             size: 512MB
             width: 64 bits
     *-memory:3 UNCLAIMED
          physical id: 3
     *-memory:4 UNCLAIMED
          physical id: 5

Placa de Vídeo

Citar
           *-display
                description: VGA compatible controller
                product: 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
                vendor: Silicon Integrated Systems [SiS]
                physical id: 0
                bus info: pci@01:00.0
                version: 00
                size: 128MB
                width: 32 bits
                clock: 66MHz
                capabilities: vga cap_list
                configuration: latency=0
                resources: iomemory:e8000000-efffffff iomemory:e2100000-e211ffff ioport:a000-a07f irq:7





crixtiano

#1
Amigos,

parece que algumas pistas estão me levando a descobrir o problema. Veja, aqui tenho uma saída do dmesg:

Citar[   11.352152] AGP bridge at 00:00:00
[   11.352156] Aperture from AGP @ e0000000 size 32 MB (APSIZE f38)
[   11.352158] Aperture too small (32 MB)
[   11.352160] Your BIOS doesn't leave a aperture memory hole
[   11.352162] Please enable the IOMMU option in the BIOS setup
[   11.352164] This costs you 64 MB of RAM
[   11.430608] Mapping aperture over 65536 KB of RAM @ 4000000


Veja que o kernel decidiu usar 64MB de RAM para sera essa "AGP aperture".

Um amigo, disse que talvez alguma configuração na BIOS (essa tal opção IOMMU ou alguma outra coisa que diga respeito a AGP Aperture) possa resolver isso, mas eu fui la na bios e não achei nada semelhante, somente uma opção para usar 32MB ou 64MB como memória de vídeo. Estou usando 32MB, obviamente.

Mas então, fica a grande dúvida: pq o Linux está "comendo" essa memória da minha RAM? Como fazer para ele não comer, e ao invés de 403MB, o meu sistema ficar com 480MB*?

Obrigado.

Cristiano


* 480MB = 512MB (RAM) - 32MB (reservado p/ video)