Linux: ¿hay alguna forma de identificar la velocidad de su memoria a través del software?

9

¿Hay alguna forma de identificar la velocidad de su memoria a través del software? Estoy en Fedora 9 y estoy buscando averiguar la velocidad de los DIMM que tengo actualmente allí.

He probado un 'lshw' pero no muestra la velocidad. Sé que la placa base admite 3 velocidades diferentes, pero no sé qué hay allí y no quiero apagar la caja.

¿Algunas ideas?

Gracias,

EDITAR: He encontrado que el carnero es '30 ns 'según dmidecode. ¿Cómo puede ser 33 MHz si la placa solo admite 400, 533, 667 Mhz RAM?

EDIT 2: ¿Hay otras herramientas para hacer esto?



EDITAR 3: en realidad me rendí y terminé apagándome por unos minutos y abriendo el caso. Resultó ser 667 MhZ - este modelo: http://www.directron.com/rm12864aa667.html . A pesar de no ser capaz de descubrir que era 667 a través del software, he marcado la respuesta de HD como la correcta, ya que parece ser la mejor herramienta para el trabajo.




Aquí está la salida de demidecode --type memory

# dmidecode 2.7
SMBIOS 2.4 present.

Handle 0x0008, DMI type 5, 20 bytes.
Memory Controller Information
    Error Detecting Method: 64-bit ECC
    Error Correcting Capabilities:
        None
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 1024 MB
    Maximum Total Memory Size: 2048 MB
    Supported Speeds:
        70 ns
        60 ns
        50 ns
    Supported Memory Types:
        DIMM
        SDRAM
    Memory Module Voltage: 3.3 V
    Associated Memory Slots: 2
        0x0009
        0x000A
    Enabled Error Correcting Capabilities:
        None

Handle 0x0009, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM0
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM1
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x002F, DMI type 16, 15 bytes.
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 4 GB
    Error Information Handle: Not Provided
    Number Of Devices: 2

Handle 0x0031, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK0
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer0
    Serial Number: SerNum0
    Asset Tag: AssetTagNum0
    Part Number: PartNum0

Handle 0x0033, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1
    Bank Locator: BANK1
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer1
    Serial Number: SerNum1
    Asset Tag: AssetTagNum1
    Part Number: PartNum1
barfoon
fuente
¿De qué proveedor es la máquina? ¿No puedes buscarlo en su sitio?
MDMarra
No, es una máquina personalizada
barfoon

Respuestas:

18

dmidecode es la herramienta que estás buscando.

hdanniel
fuente
Hay mucha información aquí, pero la velocidad está en ns, ¿quiero la velocidad en MHz?
barfoon el
Mi dmidecode me da velocidades en ns y MHz, pero unos segundos de aritmética (o unidades en ejecución) realizarán la conversión si es necesario.
womble
1
Entonces, ¿30 ns de memoria = 33 MHz? ¿Mis matemáticas son correctas allí? 1 / (30 / 1,000,000) = velocidad en Hz
barfoon
3
@barfoon: Sí, 30ns == 33MHz. El cálculo más rápido es 1000 / (ns) == velocidad en MHz.
womble
13

En mi Debian, lshw dame esa información.

# lshw -version
B.02.13
# lshw -short -C memory
H/W path             Device     Class       Description
=======================================================
/0/1                            memory      128KiB BIOS
/0/5/6                          memory      20KiB L1 cache
/0/5/7                          memory      1MiB L2 cache
/0/27                           memory      System Memory
/0/27/0                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/1                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/2                         memory      256MiB DIMM DDR Synchronous 266 MHz (3.8 ns)
/0/27/3                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/28                           memory      Flash Memory
/0/28/0                         memory      512KiB Chip FLASH Non-volatile
/0/0                            memory      
/0/2                            memory      
sebthebert
fuente
Esto es genial, pero en mi versión no muestra la velocidad bajo la descripción. Gracias de todos modos,
barfoon
2

¿Puedes publicar tu salida de dmidecode para la sección de memoria? ( dmidecode - tipo de memoria )

Es posible que desee leer esto: http://www.howtoforge.com/dmidecode-finding-out-hardware-details-without-opening-the-computer-case

El "NS" hace referencia a "nanosegundos", la velocidad a la que la memoria puede responder. Cuanto más bajo es el número, más rápida es la velocidad. Lamentablemente, esto no hace referencia a un número exacto de Mhz. Se supone que DMIDECODE también generará Mhz. Verifique en la parte inferior de la salida o simplemente dmidecode --type memory | grep Mhz

David Rickman
fuente
¿Puedo sugerirle que actualice su versión de dmidecode a 2.8 o posterior? Puede obtener las rpm aquí: icewalkers.com/rpm/dmidecode/fedora-core-9/download/… y solo rpm -i dmidecode * rpm Ver. 2.7 no admite mostrar los Mhz en los que se ejecuta su memoria.
David Rickman el
1

Si realmente desea comparar la velocidad de la memoria, no puede hacerlo en un modo protegido de procesador de 32 bits 386 ya que las fallas de página y el diseño de las tablas de páginas pesarán mucho en los resultados.

Su mejor opción es codificar el punto de referencia en el "modo real" de 16 bits donde tiene acceso directo a las direcciones físicas de la memoria.

Para obtener un buen código de arranque que se pueda personalizar fácilmente, consulte la fuente GRUB bootloader stage1. stage1 es el MBR que reside en los primeros 512 bytes de su disco duro. Lo encontrará en el directorio fuente archivo stage1 / stage1.S; Es muy comentado y fácilmente comprensible.

Una vez que haya personalizado el MBR según sus necesidades, compílelo con el siguiente método:

$ BOOT=mbr
$ gcc -O2 -fno-builtin -nostdinc -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -g -c $BOOT.S
$ gcc  -g  -nostdlib -Wl,-N,-Ttext,7C00 -o $BOOT.exec  $BOOT.o  
$ objcopy -O binary $BOOT.exec $BOOT

Ahora tiene un MBR x86 listo. Es deseable probar su código en una máquina virtual como Qemu o Bochs antes de ejecutarlo en la máquina real; También facilitará el ciclo de compilación / depuración.

Espero eso ayude


fuente
1
Creo que solo quiere saber a qué frecuencia está clasificada su RAM sin abrir la máquina.
MDMarra
1

Si tienes mucha suerte, la herramienta que estás buscando es una linterna. Un poco de memoria puede abrir la caja y mirar y ver una pegatina que lo tiene en la etiqueta. Depende totalmente de su caso, sin embargo en cuanto a lo fácil que es para llegar a ella, y que no es necesario apagar la máquina, siempre y cuando usted es realmente realmente realmente cuidado. No sé qué experiencia tiene trabajando en máquinas internas, pero esto es lo siguiente que intento cuando no puedo usar los comandos del software Linux para resolverlo.

Bart Silverstrim
fuente
1

EDITAR: He encontrado que el carnero es '30 ns 'según dmidecode. ¿Cómo puede ser 33 MHz si la placa solo admite 400, 533, 667 Mhz RAM?

Supongo que es algo como esto:

Cada chip individual en un SIMM / DIMM funciona a 30ns o 33MHz. Hay 8 chips por SIMM, entonces 8 x 33MHz = 266MHz; o 16 chips por DIMM, dando 533 MHz.

Entonces, mientras cada chip funciona a 33 MHz, todo el módulo de memoria puede entregar datos a 533 MHz.

pgs
fuente
Creo que esta respuesta tiene más sentido, ive publicado la salida de dmidecode anterior
barfoon
Desafortunadamente, no es tan simple como lo he visto, ya que la velocidad reportada es de 30 ns y la velocidad real de la memoria es de 667 MHz ... Por lo tanto, no estoy seguro de que haya una relación clara entre los dos.
olefebvre
@pgs - Dram sincrónico no funciona así. Se accede a todos los chips en paralelo. Es más probable que este 30ns sea el tiempo total para acceder a la primera palabra, teniendo en cuenta las latencias de dirección de fila y columna. Incluso si se necesita un total de 30ns para acceder a la primera palabra, las palabras siguientes deberían salir mucho más rápido. Las CPU modernas gastan mucho esfuerzo ocultando tales latencias usando caché, predicción de ramificaciones y otras optimizaciones.
Mark Booth
1

Sé que esto es un poco tarde, pero:

Si toma los tiempos admitidos y los divide a la mitad, se ajustan a la tasa dada de 30. Luego, si divide a la mitad esto y divide 10000 entre ellos, da (800, 666, 571.4)

No tengo idea de por qué, aunque creo que la conexión entre los tiempos y la velocidad de datos puede ser complicada; Además, uno de estos podría ser una velocidad de datos doble .

Chris2048
fuente
1

Solo para aclarar, la memoria de 33 mhz que ves al final es tu memoria de BIOS :)

    Type: Flash
    Type Detail: Non-Volatile
    Speed: 33 MHz
    Manufacturer: ATMEL

Si desea utilizar una herramienta mejor, instale lm_sensors ( https://wiki.archlinux.org/index.php/Lm_sensors ) e i2c-tools ( https://www.archlinux.org/packages/?name=i2c- herramientas )

Entonces puede obtener muchos más detalles específicos sobre su memoria con dimm-decode (aquí hay una muestra de la salida):

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0055
Guessing DIMM is in                             bank 6

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x4422)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     RDIMM

---=== Memory Characteristics ===---
Fine time base                                  2.500 ps
Medium time base                                0.125 ns
Maximum module speed                            1066MHz (PC3-8533)
Size                                            16384 MB
Banks x Rows x Columns x Bits                   8 x 15 x 11 x 64
Ranks                                           4
SDRAM Device Width                              4 bits
tCL-tRCD-tRP-tRAS                               7-7-7-20
Supported CAS Latencies (tCL)                   8T, 7T, 6T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
Minimum Active to Auto-Refresh Delay (tRC)      50.625 ns
Minimum Recovery Delay (tRFC)                   160.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       37.500 ns

---=== Optional Features ===---
Operable voltages                               1.5V, 1.35V
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         Yes
Operating temperature range                     0-95C
Refresh Rate in extended temp range             1X
Auto Self-Refresh?                              No
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         0
SDRAM Device Type                               0

---=== Physical Characteristics ===---
Module Height (mm)                              30
Module Thickness (mm)                           4 front, 4 back
Module Width (mm)                               133.5
Module Reference Card                           F

---=== Registered DIMM ===---
# DRAM Rows                                     2
# Registers                                     2
Register manufacturer                           IDT
Register device type                            SSTE32882
Register revision                               0x61
Heat spreader characteristics                   00
SSTE32882 RC0/RC1                               00
SSTE32882 RC2/RC3                               50
SSTE32882 RC4/RC5                               50
SSTE32882 RC6/RC7                               00
SSTE32882 RC8/RC9                               00
SSTE32882 RC10/RC11                             00
SSTE32882 RC12/RC13                             00
SSTE32882 RC14/RC15                             00

---=== Manufacturer Data ===---
Module Manufacturer                             Samsung
DRAM Manufacturer                               Samsung
Manufacturing Location Code                     0x02
Manufacturing Date                              2011-W39
Assembly Serial Number                          xxx
Part Number                                     M393B2K70CM0-YF8
tweak2
fuente
1
dimm-decode? Creo que quisiste decir decode-dimms. De todos modos, no funciona para mí: dice que se detectaron 0 DIMM SDRAM.
underscore_d
0

Si es posible, intente ejecutar Memtest, IIRC muestra la velocidad total y la velocidad de la memoria en la esquina superior izquierda (20000MB / s @ 667MHz, por ejemplo).

olefebvre
fuente
0

Los tiempos con DDR sdram son múltiplos de 8 Y de 2. Por lo que recuerdo, DDR significa Velocidad de datos doble (verifique esto, porque no pude encontrar la información para verificar nuevamente). Esa memoria es capaz de transferir en ambos sentidos (dentro y fuera) mientras tanto.

El motivo es fácil. El DDR se cronometra dos veces más rápido que la frecuencia de bus dada. No confunda la frecuencia del bus y la capacidad de velocidad de transferencia para el bus. El bus transfiere 32, 64, 128 o 256 bits a la frecuencia del bus. Un conjunto de 128 bits de datos POR CICLO es una gran cantidad de datos.

Como ejemplo: DDR400 se encontró en buses a 200 MHz. El otro nombre es PC3200. Para obtener de 400 a 3200, encontrará un factor 8. Este factor SIEMPRE se verifica sea cual sea el DDR (1/2/3/4 ...)

El siguiente enlace es lo suficientemente bueno para obtener los conceptos básicos (y probablemente mejor y más completo que mis explicaciones :))

Speedstream
fuente