Analizando la memoria en GNU/Linux
Publicado el 25 de enero de 2011El fin de semana le compré 2GB de memoria más a mi computadora Hoth. Tenía un solo dim de 2GB hasta ahora, con un procesador AMD Athlon 64 X2 Dual Core 5600+.
Hacía meses que estaba por hacerlo, ya que venía andando bastante mal. Si bien estoy usando ArchLinux – un cambio que implicó mejoras en el rendimiento – aparentemente uso demasiadas aplicaciones al mismo tiempo.
Varias personas me comentaron que al usar una arquitectura de 64 bits, era conveniente tener al menos 4GB para que la computadora rindiera. Estoy muy oxidado en lo que respecta a arquitecturas de computadoras, así que me considero bastante ignorante en el tema del hardware.
Un tema que sí notaba, es que el sistema accedía mucho a la memoria Swap. Y algo que sí sé de hardware, es que la lectura y escritura en el disco duro es el proceso más lento en los componentes de memoria.
Hay un par de aplicaciones en la línea de comando de GNU/Linux que nos permiten obtener información interesante sobre la memoria de nuestra máquina. La primera es free
. Con el parámetro -m, podemos ver los valores en megabytes. Así estaba mi computadora antes de la instalación del nuevo dim:
[fernando@hoth ~]$ free -m total used free shared buffers cached Mem: 1754 1711 42 0 30 196 -/+ buffers/cache: 1485 268 Swap: 1906 390 1515
Otro comando nos ayuda a determinar qué tipo de memoria tenemos en la computadora: sudo dmidecode --type memory
. Antes de comprar la memoria siquiera, podemos fijarnos el tipo de memoria, y otros datos:
# dmidecode 2.11 SMBIOS 2.5 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: Not Provided Number Of Devices: 4 Handle 0x0029, DMI type 17, 27 bytes Memory Device Array Handle: 0x0027 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 72 bits Size: 2048 MB Form Factor: DIMM Set: None Locator: DIMM0 Bank Locator: BANK0 Type: DDR2 Type Detail: Synchronous Speed: 333 MHz Manufacturer: Manufacturer0 Serial Number: SerNum0 Asset Tag: AssetTagNum0 Part Number: PartNum0 Handle 0x002B, DMI type 17, 27 bytes Memory Device Array Handle: 0x0027 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM1 Bank Locator: BANK1 Type: SDRAM Type Detail: None Speed: Unknown Manufacturer: Manufacturer1 Serial Number: SerNum1 Asset Tag: AssetTagNum1 Part Number: PartNum1 Handle 0x002D, DMI type 17, 27 bytes Memory Device Array Handle: 0x0027 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM2 Bank Locator: BANK2 Type: SDRAM Type Detail: None Speed: Unknown Manufacturer: Manufacturer2 Serial Number: SerNum2 Asset Tag: AssetTagNum2 Part Number: PartNum2 Handle 0x002F, DMI type 17, 27 bytes Memory Device Array Handle: 0x0027 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM3 Bank Locator: BANK3 Type: SDRAM Type Detail: None Speed: Unknown Manufacturer: Manufacturer3 Serial Number: SerNum3 Asset Tag: AssetTagNum3 Part Number: PartNum3
Como ven, este comando despliega cuántos puertos tenemos, la capacidad máxima de memoria de nuestro motherboard, y qué dims tenemos instalados además de informacion detallada de cada uno. Importante saber antes de comprar un nuevo dim.
Ahora que tengo estos 4GB, el sistema vuela. Se nota que no tiene que usar el disco para la memoria de intercambio, y con las mismas aplicaciones ejecutándose, la Ram se mantiene poco más de la mitad y apenas un poco de memoria swap. En este momento ejecutando: Icecat con 28 pestañas, 2 instancias de Hotot (una para Twitter y otra para Identi.ca), Amarok, Kopete, Dolphin, Emacs y Yakuake, el sistema no muestra ninguna lentitud.
Mirando la memoria libre con free, pueden ver que apenas se está usando la ram del swap:
[fernando@hoth ~]$ free -m total used free shared buffers cached Mem: 3706 3575 131 0 59 778 -/+ buffers/cache: 2737 969 Swap: 1906 7 1898
Y la información del nuevo dim con sudo dmidecode --type memory:
Handle 0x002B, DMI type 17, 27 bytes Memory Device Array Handle: 0x0027 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 72 bits Size: 2048 MB Form Factor: DIMM Set: None Locator: DIMM1 Bank Locator: BANK1 Type: DDR2 Type Detail: Synchronous Speed: 333 MHz Manufacturer: Manufacturer1 Serial Number: SerNum1 Asset Tag: AssetTagNum1 Part Number: PartNum1
Lo que me queda por comprar ahora, como detalle final, sería una placa de video. Tengo una ATI integrada, por lo que obtiene memoria de la Ram. Además, me gustaría tener una placa nVidia ya que sus drivers son muy superiores a los de ATI en GNU/Linux. Veremos si más adelante encuentro que vale la pena la inversión…
En cuanto a la memoria, 4GB debería ser suficiente memoria para cualquiera… ¡Sí, claro!
Ya conocía free desde hace un tiempo, pero dmidecode lo descubrí hace poco. Así que aprovecho para compartir esta info por acá por si a alguien más le resulta útil (y para tener a mano cuando me olvide…).
José Arrarte 25 enero. 2011 - 10:35
Fernando, considera utilizar un kernel de 32 bits con PAE (Physical address extensions) en lugar de uno de 64 bits. Varios paquetes están más estables en distribuciones de 32 bits (y además, te ahorras algunos megas por tener tipos de datos más chicos).
Escribí sobre esto en
http://josearrarte.com/blog/2009/08/30/64gb-de-ram-en-un-sistema-operativo-de-32-bits/
Lo jodido puede ser compatibilidad con ciertos drivers, y que cada proceso está limitado a direccionar un espacio de memoria de 32 bits.
Saludos!
Fernando 27 enero. 2011 - 01:21
¡Gracias por el tip! No tenía ni idea.
Por ahora venía lo más bien en cuanto a paquetes de 64 bits. No he tenido problemas de compatibilidad por el momento con drivers y demás. A veces me pasaba de querer instalar una aplicación muy nueva, y generalmente no reparten paquetes de 64, y hay que compilar. ArchLinux te hace bastante fácil compilar en caso de ser necesario. Generalmente no lo es, ya que se encuentra un paquete para casi cualquier aplicación en i686 y x86_64 en los repositorios mantenidos por la comunidad de usuarios.
El problema que tenía era con la memoria al ir ejecutando muchas aplicaciones. Pero con esta actualización, está funcionando perfecto. Y no he llegado a “saturar” tanto la ram como para que use mucho la swap. Por ahora voy a seguir usando el kernel de 64, pero de ahora en más tengo en cuenta los kernel con PAE.
Saludos!
Alejandro 25 enero. 2011 - 13:37
Muy interesante, yo tampoco conocia el comando dmidecode, ahora ya se que mi placa base soporta hasta 16 Gb de RAM 🙂
Saludos y buen post. Te agrego a mi blogroll
Fernando 27 enero. 2011 - 01:22
¡Me alegro que haya servido!
Gracias por agregarme al blogroll, te espero por estos lados entonces.
Nos leemos! Saludos.
dklight 1 febrero. 2011 - 18:20
Sos conciente de que estás consumiendo una real grosería de memoria? Asociar directamente que el sistema sea de 64 bits con que necesites 4G de memoria es un disparate. La memoria depende pura y exclusivamente de lo que uses, y por las aplicaciones que describís, no me extraña.
Queda claro que los programas salen cada vez peor. La gente sigue haciendo más o menos las mismas cosas. La lectura de emails, o escribir documentos de texto, planillas de calculo, etc no ha cambiado mucho en los últimos 10 años, y sin embargo necesitamos más de 15 veces la memoria que usabamos por aquel entonces. Acordate que 3 tipos fueron hasta la luna y volvieron sanos y salvos con menos de una Comodore64. Y nosotros necesitamos semejante grosería de equipo para llevar adelante nuestras tareas diarias?
Yo por mi parte tengo 512M, y me hé propuesto tirar con este laptop (que ya tiene 2 años) por otros 8 años más. Cuándo cambiar mi máquina lo voy a decidir yo, no el mercado…
Fernando 7 febrero. 2011 - 22:14
Sí, en verdad soy conciente que sí. Pero bueno, las aplicaciones que quiero usar son bastante consumidoras.
Como dice Jeff Atwood, hoy en día el hardware es barato, los programadores caros. Creo que el mercado se mueve con esta mentalidad ahora, buscando ahorrar costos.
lucho 4 julio. 2016 - 17:00
gracias muy buen aporte