¿Por qué la memoria de un ECS obtenida ejecutando el comando free es incompatible con la memoria real?
Síntomas
Después de crear un ECS, se ejecuta el comando free -m para ver la memoria del ECS. La memoria de ECS es menor que la memoria configurada durante la creación de ECS.
Un ejemplo es el siguiente:
Por ejemplo, puede configurar la memoria como KB de 4,194,304 (4,096 MB) al crear el ECS. Una vez creado el ECS, ejecute el comando free -m para ver su memoria. El resultado del comando es el siguiente:
[root@localhost ~]# free -m total used free shared buff/cache available Mem: 3790 167 3474 8 147 3414 Swap: 1022 0 1022
La memoria en la salida del comando es de 3790 MB, que es menor que los 4096 MB configurados.
Ejecute el comando dmidecode -t memory para comprobar la memoria actual configurada para el ECS. El resultado del comando es el siguiente:
[root@localhost ~]# dmidecode -t memory # dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: Other Speed: Unknown Manufacturer: QEMU Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Clock Speed: Unknown Minimum Voltage: Unknown Maximum Voltage: Unknown Configured Voltage: Unknown
La memoria en la salida del comando es la misma que la configurada durante la creación de ECS.
Causas posibles
Cuando se inicia el SO, se inicializan los dispositivos relacionados, que ocupan la memoria. Además, cuando se inicia el núcleo, también ocupa memoria. La memoria ocupada por kdump se puede ajustar. A menos que se especifique lo contrario, no cambie el tamaño de memoria ocupado por kdump.
La salida del comando free -m muestra la memoria disponible del ECS y la de dmidecode -t memory muestra la memoria del hardware.
Por lo tanto, la memoria obtenida ejecutando el comando free -m es menor que la memoria configurada para el ECS. Esto es normal.
Este es un fenómeno normal incluso para los servidores físicos.