Tengo un servidor CentOS 5.10 ( 32 bits ) ejecutándose en VMWare. Se le asignan 4 GB de RAM.
Si corro dmidecode -t 17 | grep Size | grep MB
veo:
Size: 4096 MB
Sin embargo, cuando corro free
, veo:
total used free shared buffers cached
Mem: 3107140 1239244 1867896 0 332 400464
-/+ buffers/cache: 838448 2268692
Swap: 2096472 0 2096472
¿Por qué hay una discrepancia entre la cantidad total de free
informes de memoria y la dmidecode
salida?
El núcleo que estoy ejecutando es:
2.6.18-371.4.1.el5 #1 SMP Thu Jan 30 06:09:24 EST 2014 i686 i686 i386 GNU/Linux
Es cierto que el kernel no se está ejecutando, PAE
pero pensé que solo era necesario para una memoria superior a 4 GB.
Sé que me falta algo simple. ¿Alguien puede dar más detalles?
Notas / observaciones adicionales
Definitivamente parece que mi kernel está reservando un montón de memoria para otras cosas. Esto es lo que veo en /var/log/dmesg
:
Linux version 2.6.18-371.4.1.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Thu Jan 30 06:09:24 EST 2014
BIOS-provided physical RAM map:
BIOS-e820: 0000000000010000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000bfef0000 (usable)
BIOS-e820: 00000000bfef0000 - 00000000bfeff000 (ACPI data)
BIOS-e820: 00000000bfeff000 - 00000000bff00000 (ACPI NVS)
BIOS-e820: 00000000bff00000 - 00000000c0000000 (usable)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6bf0
Memory for crash kernel (0x0 to 0x0) notwithin permissible range
/proc/meminfo
?/proc/iomem
le mostrará la memoria utilizada por los dispositivos para los que Linux tiene un controlador. El mapa de memoria e820 (al comienzo de undmesg
núcleo recién arrancado) le mostrará lo que su BIOS / EFI piensa qué regiones están reservadas. Hacerlos coincidir entre sí es AFAIK, una tarea manual sin soporte de herramientas.La salida del
free
comando no cuenta la memoria del núcleo reservada y algunos otros pequeños bits. Verá esta discrepancia incluso en un kernel de 64 bits e incluso con <2 GB de RAM.fuente
free
, una máquina de 4 GB muestra 3948 MB.La línea crítica de su mapa de RAM física es esta:
Esta línea muestra que 1 GB (0x40000000 bytes, hexadecimal) de la RAM física de su sistema está siendo mapeado por el BIOS por encima del límite de 4 GB, por lo que es inaccesible para un sistema de 32 bits sin PAE.
fuente