Eu tenho uma máquina virtual amd64 do Debian wheezy (7.4) em execução no VirtualBox 4.3.10 em um host Win7 x64 com processador AMD A10-5700. A máquina virtual é configurada com 16 GB de memória (o host tem 32 GB de RAM física, e todos parecem ser reconhecidos corretamente). Nenhuma outra VM está em execução. No entanto, a VM do Debian vê muito menos memória RAM do que alocada.
$ uname -a
Linux debian3 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 GNU/Linux
$ free
total used free shared buffers cached
Mem: 3610656 958788 2651868 0 181072 379744
-/+ buffers/cache: 397972 3212684
Swap: 3668988 0 3668988
$ dmesg | grep BIOS-e820
[ 0.000000] BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000de9df000 (usable)
[ 0.000000] BIOS-e820: 00000000de9df000 - 00000000de9ec000 (reserved)
[ 0.000000] BIOS-e820: 00000000de9ec000 - 00000000dfb6c000 (usable)
[ 0.000000] BIOS-e820: 00000000dfb6c000 - 00000000dfbc4000 (reserved)
[ 0.000000] BIOS-e820: 00000000dfbc4000 - 00000000dfbcc000 (ACPI data)
[ 0.000000] BIOS-e820: 00000000dfbcc000 - 00000000dfbd0000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000dfbd0000 - 00000000dffd0000 (usable)
[ 0.000000] BIOS-e820: 00000000dffd0000 - 00000000dfff0000 (reserved)
Eu tenho o VirtualBox configurado para usar o EFI com essa VM, então aqui estão algumas mensagens possivelmente relevantes:
$ dmesg | grep EFI
[ 0.000000] EFI v2.31 by EDK II
[ 0.000000] Kernel-defined memdesc doesn't match the one from EFI!
[ 0.000000] EFI: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x00000000000a0000) (0MB)
[ 0.000000] EFI: mem01: type=2, attr=0xf, range=[0x0000000000100000-0x00000000003b1000) (2MB)
[ 0.000000] EFI: mem02: type=7, attr=0xf, range=[0x00000000003b1000-0x0000000002000000) (28MB)
[ 0.000000] EFI: mem03: type=4, attr=0xf, range=[0x0000000002000000-0x0000000002600000) (6MB)
[ 0.000000] EFI: mem04: type=7, attr=0xf, range=[0x0000000002600000-0x0000000036bf8000) (837MB)
[ 0.000000] EFI: mem05: type=2, attr=0xf, range=[0x0000000036bf8000-0x00000000375f4000) (9MB)
[ 0.000000] EFI: mem06: type=7, attr=0xf, range=[0x00000000375f4000-0x00000000a49a4000) (1747MB)
[ 0.000000] EFI: mem07: type=2, attr=0xf, range=[0x00000000a49a4000-0x00000000dc000000) (886MB)
[ 0.000000] EFI: mem08: type=4, attr=0xf, range=[0x00000000dc000000-0x00000000dc020000) (0MB)
[ 0.000000] EFI: mem09: type=7, attr=0xf, range=[0x00000000dc020000-0x00000000dddc3000) (29MB)
[ 0.000000] EFI: mem10: type=4, attr=0xf, range=[0x00000000dddc3000-0x00000000de1a6000) (3MB)
[ 0.000000] EFI: mem11: type=7, attr=0xf, range=[0x00000000de1a6000-0x00000000de440000) (2MB)
[ 0.000000] EFI: mem12: type=1, attr=0xf, range=[0x00000000de440000-0x00000000de45d000) (0MB)
[ 0.000000] EFI: mem13: type=4, attr=0xf, range=[0x00000000de45d000-0x00000000de9df000) (5MB)
[ 0.000000] EFI: mem14: type=5, attr=0x800000000000000f, range=[0x00000000de9df000-0x00000000de9ec000) (0MB)
[ 0.000000] EFI: mem15: type=4, attr=0xf, range=[0x00000000de9ec000-0x00000000deaec000) (1MB)
[ 0.000000] EFI: mem16: type=7, attr=0xf, range=[0x00000000deaec000-0x00000000deb1f000) (0MB)
[ 0.000000] EFI: mem17: type=2, attr=0xf, range=[0x00000000deb1f000-0x00000000deb25000) (0MB)
[ 0.000000] EFI: mem18: type=4, attr=0xf, range=[0x00000000deb25000-0x00000000df9ec000) (14MB)
[ 0.000000] EFI: mem19: type=7, attr=0xf, range=[0x00000000df9ec000-0x00000000df9ef000) (0MB)
[ 0.000000] EFI: mem20: type=3, attr=0xf, range=[0x00000000df9ef000-0x00000000dfb6c000) (1MB)
[ 0.000000] EFI: mem21: type=5, attr=0x800000000000000f, range=[0x00000000dfb6c000-0x00000000dfb9c000) (0MB)
[ 0.000000] EFI: mem22: type=6, attr=0x800000000000000f, range=[0x00000000dfb9c000-0x00000000dfbc0000) (0MB)
[ 0.000000] EFI: mem23: type=0, attr=0xf, range=[0x00000000dfbc0000-0x00000000dfbc4000) (0MB)
[ 0.000000] EFI: mem24: type=9, attr=0xf, range=[0x00000000dfbc4000-0x00000000dfbcc000) (0MB)
[ 0.000000] EFI: mem25: type=10, attr=0xf, range=[0x00000000dfbcc000-0x00000000dfbd0000) (0MB)
[ 0.000000] EFI: mem26: type=4, attr=0xf, range=[0x00000000dfbd0000-0x00000000dffd0000) (4MB)
[ 0.000000] EFI: mem27: type=6, attr=0x800000000000000f, range=[0x00000000dffd0000-0x00000000dfff0000) (0MB)
[ 1.204229] fb0: EFI VGA frame buffer device
[ 6.734371] EFI Variables Facility v0.08 2004-May-17
E uma outra mensagem (relacionada ao iommu) Tenho certeza que não deveria estar aqui:
$ dmesg | grep Calgary
[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
O bootloader é grub-efi-amd64
. Toda a saída acima foi de inicialização com esta configuração de /boot/grub/grub.cfg
:
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd0,gpt2)'
search --no-floppy --fs-uuid --set=root 7d58d543-5c40-4e8d-bbfa-f3773dc7ca15
echo 'Loading Linux 3.2.0-4-amd64 ...'
linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=7d58d543-5c40-4e8d-bbfa-f3773dc7ca15 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-4-amd64
}
Eu olhei várias partes da fonte e documentação do kernel, a documentação do VirtualBox, e em outros lugares para respostas. Eu tentei adicionar e remover várias combinações de mem=16G
, iommu=soft
, swiotlb=force
, allowdac
, noefi
e add_efi_memmap
sem nenhum efeito real. O parâmetro iommu=soft
elimina as mensagens relacionadas com "Calgary", conforme esperado, mas não há efeito na memória relatada. Apenas por diversão, eu tentei reduzir a memória configurada para 8GB, mas isso também não teve efeito aparente. Se isso importa, eu estou executando o kernel de estoque.
O que mais pode funcionar?
Editar:
Aqui está a saída de dmidecode
:
# dmidecode 2.11
# SMBIOS entry point at 0xdfbce000
SMBIOS 2.5 present.
10 structures occupying 449 bytes.
Table at 0xDFBCE020.
Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
Vendor: innotek GmbH
Version: VirtualBox
Release Date: 12/01/2006
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 128 kB
Characteristics:
ISA is supported
PCI is supported
Boot from CD is supported
Selectable boot is supported
8042 keyboard services are supported (int 9h)
CGA/mono video services are supported (int 10h)
ACPI is supported
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: innotek GmbH
Product Name: VirtualBox
Version: 1.2
Serial Number: 0
UUID: 0B1BEC54-20D1-4809-A92D-22EE66339AA8
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Virtual Machine
Handle 0x0008, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Oracle Corporation
Product Name: VirtualBox
Version: 1.2
Serial Number: 0
Asset Tag: Not Specified
Features:
Board is a hosting board
Location In Chassis: Not Specified
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0003, DMI type 3, 13 bytes
Chassis Information
Manufacturer: Oracle Corporation
Type: Other
Lock: Not Present
Version: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
Handle 0x0007, DMI type 126, 42 bytes
Inactive
Handle 0x0005, DMI type 126, 15 bytes
Inactive
Handle 0x0006, DMI type 126, 28 bytes
Inactive
Handle 0x0002, DMI type 11, 7 bytes
OEM Strings
String 1: vboxVer_4.3.10
String 2: vboxRev_93012
Handle 0x0008, DMI type 128, 8 bytes
OEM-specific Type
Header and Data:
80 08 08 00 35 C7 31 00
Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table
Tags virtualbox debian memory