Supongamos que tenemos un equipo (puede ser un servidor, PC, notebook, netbook, etc.) y queremos agregarle memoria RAM. Como todos sabemos (o no) con arquitecturas de 64 bits se pueden direccionar 16 exabytes, algo así como 16777216 terabytes (264 bytes). Lo que no significa que podamos poner una memoria RAM de 16 exabytes (se me caen las babas...) en nuestro sistema, ya que el arreglo de memoria física tiene un límite. Muchos se sorprenderán al saber que ese límite suele ser bastante bajo para computadoras de escritorio, lo que impide darles un uso serio, por ejemplo para improvisar un servidor. Por ello en este artículo voy a explicar cómo determinar rápidamente, utilizando GNU/Linux, cuál es el límite máximo de memoria RAM se puede instalar en nuestro sistema, sin necesidad de remitirse al manual del equipo o a la hoja de datos del motherboard.



El límite máximo de memoria RAM es un dato que se puede obtener desde la descripción del arreglo de memoria física del sistema. Este tipo de información se encuentra en la tabla DMI (SMBIOS), una estructura de datos que se utiliza para leer información almacenada en la BIOS del sistema.

En GNU/Linux, es posible utilizar la herramienta dmidecode para obtener información del hardware del sistema, tal como se describe en la BIOS del sistema de acuerdo al estándar SMBIOS/DMI. Entre la información que se puede obtener de esta tabla se incluye el fabricante, modelo, número de serie, versión de BIOS, y una gran cantidad de detalles según cada fabricante. A menudo se incluye el estado de uso de los sockets de CPU, slots de expansión (ISA, AGP, PCI, PCIe) y slots de módulos de memoria, y la lista de puertos de E/S (serie, paralelo, USB).

Cabe destacar que no se puede confiar ciegamente en la información que reporta dmicecode, ya que no escanea el hardware, sino que reporta los datos de la tabla SMBIOS/DMI, es decir, reporta lo que la BIOS le dice.

man dmidecode

Debido a la gran cantidad de información que posee la tabla DMI, ésta se divide en tipos DMI:

       Type   Information
       --------------------------------------------
          0   BIOS
          1   System
          2   Baseboard
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply
         40   Additional Information
         41   Onboard Devices Extended Information
         42   Management Controller Host Interface

La especificación competa del estándar SMBIOS/DMI se encuentra en el siguiente documento:

System Management BIOS (SMBIOS) Reference Specification

Aunque, dmidecode admite el uso de keywords para filtrar la información de salida, éstos son: bios, system, baseboard, chassis, chassis, memory, cache, connector, slot.

Por ejemplo, para obtener información de la BIOS ejecutar dmidecode -t bios:

[root@hal9000 ~]# dmidecode -t bios
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Intel Corp.
        Version: BEH6110H.86A.0016.2011.0118.1128
        Release Date: 01/18/2011
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 1024 kB
        Characteristics:
                PCI is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                BIOS ROM is socketed
                EDD is supported
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 kB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                ACPI is supported
                USB legacy is supported
                BIOS boot specification is supported
                Targeted content distribution is supported

Handle 0x0026, DMI type 13, 22 bytes
BIOS Language Information
        Language Description Format: Long
        Installable Languages: 1
                en|US|iso8859-1
        Currently Installed Language: en|US|iso8859-1

Entonces, si deseamos saber cuál es el límite máximo de memoria RAM que admite nuestro sistema, debemos obtener la información del arreglo de memoria física, que equivale al tipo DMI 16 (de acuerdo a la tabla de tipos DMI):

[root@hal9000 ~]# dmidecode -t 16
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0027, DMI type 16, 15 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 8 GB
        Error Information Handle: No Error
        Number Of Devices: 2

Se observa que este motherboard en particular (Intel DH61BE de acuerdo a lo que reporta el comando dmidecode -t baseboard) soporta apenas unos miserables 8GB de memoria RAM como máximo. Esto es 8GB de memoria RAM en total, no por cada módulo. Revisar la sección "7.17 Physical Memory Array (Type 16)" en la página 84 de la epecificación del estándar SMBIOS.

Lo curioso es que en la hoja de datos del motherboard DH61BE, Intel dice que este modelo soporta hasta 16 GB de memoria RAM. Entonces: o tengo una versión vieja del modelo DH61BE; o Intel miente.

Para obtener información detallada acerca de la memoria RAM de nuestro sistema, es posible ejecutar el comando dmidecode -t memory:

[root@hal9000 ~]# dmidecode -t memory
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0027, DMI type 16, 15 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 8 GB
        Error Information Handle: No Error
        Number Of Devices: 2

Handle 0x002A, DMI type 17, 28 bytes
Memory Device
        Array Handle: 0x0027
        Error Information Handle: No Error
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 4096 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM1
        Bank Locator: Channel A DIMM 0
        Type: DDR3
        Type Detail: Synchronous
        Speed: 1333 MHz
        Manufacturer: Kingston
        Serial Number: 93073B4C
        Asset Tag: A1_AssetTagNum0
        Part Number: 99U5471-012.A00LF
        Rank: 2

Handle 0x002D, DMI type 17, 28 bytes
Memory Device
        Array Handle: 0x0027
        Error Information Handle: No Error
        Total Width: 64 bits
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: DIMM2
        Bank Locator: Channel B DIMM 0
        Type: Unknown
        Type Detail: Synchronous
        Speed: Unknown
        Manufacturer: A1_Manufacturer1
        Serial Number: A1_SerNum1
        Asset Tag: A1_AssetTagNum1
        Part Number: Array1_PartNumber1
        Rank: Unknown

Este comando, además de la información general relativa al arreglo de memoria física, muestra información detallada de cada módulo instalado. De esta forma es posible obtener las especificaciones de los módulos de memoria instalados en el sistema.

De la salida anterior, se observa que en el primer slot de memoria (Memory Device según dmidecode) se encuentra instalado un módulo Kingston DDR3 de 4GB, mientras que en el segundo slot no hay ningún módulo instalado (No Module Installed).

Junto con el paquete dmidecode vienen otras herramientas adicionales como biosdecode (muestra toda la información relativa a la BIOS que encuentra), ownership (obtiene el "ownership tag" en sistemas Compaq) y vpddecode (imprime la información VPD, "vital product data", que poseen casi todos los sistemas IBM y Lenovo).

¡Espero que les sirva!


Tal vez pueda interesarte


Compartí este artículo