Mostrando las entradas con la etiqueta ram. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ram. Mostrar todas las entradas

martes, 13 de diciembre de 2016

¿Es necesario la SWAP en una distro Linux?


Una pregunta que se formula muy a menudo, sobre todo por los nuevos usuarios de GNU/Linux es: "¿Es necesario una partición swap para instalar Linux?".

Esta pregunta suele venir junto con otra: "¿Cuánto espacio el asigno a la partición SWAP entonces?".

Quizá ya sea todo un cliché esta pregunta, pero nunca está demás conocer una opinión mas. De tal manera que en este post pretendo explicar para qué se utiliza la partición swap en Linux y si es realmente necesaria en todos los casos, todo esto, con base a mi experiencia que he tenido en estos sistemas operativo.

La memoria ram es limitada. Al encender el equipo se tendrá disponible gran parte su memoria, ya que se supone que no se está ejecutado ningún programa. Sólo se estarán ejecutando los procesos necesarios para poder hacer funcionar al sistema operativo y según se vaya utilizando el equipo se comenzará a abrir aplicaciones, como el navegador, el editor de documentos, Telegram, Skype y una larga lista. La memoria se va llenando más y más y el equipo cada vez va más lento. Es lógico que no funcione tan bien como cuando no teníamos ninguna aplicación iniciada.

Y entonces, a todo esto surge una pregunta.
¿Qué pasa cuando ya no queda más memoria RAM?

Al ir abriendo más aplicaciones hasta el punto de llenar toda la memoria, llegará un instante en el que no se podrá ejecutar ninguna más. Será entonces cuando Linux comience a matar procesos y obviamente, no queremos eso.

Los procesos que matará Linux serán aquellos que no comprometan la estabilidad del sistema. Tienen prioridad aquellos que hacen funcionar el sistema operativo antes que Skype o el navegador. En este momento cedemos el control al sistema operativo para que gestione las tareas como él crea conveniente y por lo menos el equipo siga funcionando.

Memoria RAM + swap

La memoria RAM y la swap permiten simular una RAM de mayor tamaño que la físicamente instalada. Esto tiene como ventaja que proporciona un espacio de memoria adicional que es a veces necesaria para continuar ejecutando procesos. Ya se sabe entonces que Linux matará procesos cuando la memoria física instalada se acabe y no haya espacio para más.

Memoria swap

La memoria swap o de intercambio utiliza espacio en el disco duro en lugar de en el módulo de memoria RAM. La escritura en disco (al menos en los mecánicos) es lenta y el uso de esta memoria puede causar un descenso de rendimiento en el sistema. Por otra parte, es preferible que el equipo vaya algo más lento a que empiece a cerrar programas.

Ahora, debo aclarar algo:

Que haya asignado un espacio en disco para la memoria swap no quiere decir que tenga que utilizarse obligadamente.
Obviamente, la memoria RAM es mucho más rápida, pero el uso de la swap es algo que puede salvarnos la vida en un determinado instante.

¿Y entonces es necesario la memoria swap?

Si tienes una máquina con 1GB de RAM desde mi punto de vísta, sí necesitas swap, aunque según el uso que le vayas a dar. Como ya he mencionado anteriormente, si se abren muchas aplicaciones el uso de la RAM crecerá y llegará un momento en el que la memoria se llene.

En mi laptop personal tengo 16GB de RAM, por lo que no necesito memoria swap de manera obligatoria o necesaria. Sin embargo tengo asignada 8GB. Ya que he llegado a ejecutar hasta 5 máquinas virtuales, entornos de desarrollo abiertos, Telegram, navegadores,  varias cosas más, y  he llegado a usar hasta 12GB de RAM como mínimo. Por lo tanto, la probabilidad que se agote es mucha, y no quiero por alguna razón esto pase y el SO mate algún proceso  que estoy utilizando, o peor aún, que reinicie el entorno de escritorio.

¿Cuánto espacio le asigno a la partición swap?

En caso de que sea necesaria, esto es lo que se recomienda para la swap:

- 1 GB de RAM o menos: la misma cantidad para la swap.
- Entre 2 GB y 4 GB de RAM: la mitad para la swap.
 Más de 4 GB de RAM: 2 GB de swap.

¿Cómo sé si se está usando la SWAP?

En la mayoría de las distros se puede instalar la utilidad htop, top o atop, para ver la cantidad de recursos que está usando cada proceso.

Tengo una PC en el trabajo, con Fedora 25 y Gnome 3.22 con 8GB en RAM, y estaba realizando unas pruebas en red con máquinas virtuales, 2 en Virtualbox con windows y 1 con Centos en VMware, además, el navegador Yandex , Chrome, el editor de texto, y otras utilidades, el resultado de htop fue el siguiente:


Prácticamente la memoria SWAP ha entrado en uso, en este caso, sí es necesario contar con ella. Esto demuestra entonces, que dependerá mucho de los programas y el uso que se le dé al equipo.

Adicional: utilizar zswap

Zswap es un módulo que se integró a partir del Kernel 3.11 a Linux y básicamente lo que hace es funcionar como compresor de paginado para mejorar el uso de RAM y Swap en un sistema.

La ventaja de Zswap con respecto a Zram radica en el hecho de que ya viene integrado en cualquier kernel Linux de cualquier distro a partir de la versión 3.11 (sólamente tenemos que habilitarlo en caso de que no lo esté) mientras que zRAM se tiene que instalar aparte y en algunas distros como fedora esto es un tedio. Por otro lado, Zswap está pensado para beneficiar a todo tipo de equipos, desde el más antiguo con el mínimo de RAM disponible hasta el más nuevo y moderno al ser sólo un compresor que en términos simples hace que "más aplicaciones quepan en la memoria RAM" (o ante los ojos del usuario así se nota aunque de fondo sea más compleja su función) mientras que zRAM ocupa equipos con al menos 1GB de RAM para "hacer impacto" pues realmente sólo es una swap que corre dentro de la RAM.


Al tener Zswap activado no sólo hay una mejor gestión de RAM en el sistema sino que también los procesos enviados a swap son muchísimo más rápidos al intercambiar I/O con la RAM, traduciéndose esto en una computadora que:

a) Va a ser difícil que se vuelva lenta.

b) En caso de que se vuelva lenta va a regresar pronto a operación rescatable en lugar de congelarse por completo.

En algunas distros ya viene activado por default zswap, en otros casos es necesario hacerlo.

Para saber si ya está activado, ejecutar el siguiente comando:

dmesg | grep zswap

Si muestra una salida parecida a esta, quiere decir, que ya está activada:

En caso de que no, entonces abrir el archivo sudo gedit /etc/default/grub y buscar la línea que comienza por GRUB_CMDLINE_LINUX y agregar al final antes de las comillas zswap.enabled=1

De tal manera que el archivo quedará se la siguiente manera:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet zswap.enabled=1"
GRUB_DISABLE_RECOVERY="true"

Ahora, actualizar el grub o reiniciar el equipo:

Ubuntu:
sudo update-grub
Fedora:
grub2-mkconfig -o /boot/grub2/grub.cfg
Arch:
sudo update-grub

Si se ejecuta el comando de comprobación de zswap de nuevo, ahora ya deberá mostrar como activado.

Conclusión:
La partición SWAP, aparentemente no es necesaria si no se va a utilizar el equipo para actividades que requieran uso de la memoria RAM de manera exigente. Aunque, nunca está de más prevenir y dejarle por lo menos 2GB de SWAP, sólo por si acaso.

Este tema es bastante controvertido en la comunidad Linux, así que los animo a dejar sus comentarios sobre si la swap es necesaria o no.

lunes, 12 de octubre de 2015

Cómo saber el máximo de memoria RAM de nuestra PC


En indeterminadas ocasiones es necesario aumentarle o cambiarle la memoria ram a nuestra pc, a veces no hay problema con tan solo comprarla y ponerla en la tarjeta madre y listo, sin embargo, algunos modelos anteriores a las CI o Amd, es necesario ver qué tanta memoria es capaz de redireccionar el procesador de la pc.

Uno de los comandos que he usado para esto, es: dmidecode

Su uso normal es el siguiente:
sudo dmidecode
El cuál arrojará toda la información de hardware de la pc, parecido al siguiente código:
# dmidecode 2.12
SMBIOS 2.7 present.
23 structures occupying 1701 bytes.
Table at 0x000EBA70.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
 Vendor: American Megatrends Inc.
 Version: K46CA.309
 Release Date: 10/16/2012
 Address: 0xF0000
 Runtime Size: 64 kB
 ROM Size: 6144 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
  Smart battery is supported
  BIOS boot specification is supported
  Targeted content distribution is supported
  UEFI is supported
 BIOS Revision: 4.6

Handle 0x0001, DMI type 1, 27 bytes
System Information
 Manufacturer: ASUSTeK COMPUTER INC.
 Product Name: K46CA
 Version: 1.0       
 Serial Number: D1N0CX538749057     
 UUID: 00000011-0000-0000-0000-60A44C743C38
 Wake-up Type: Power Switch
 SKU Number: ASUS-NotebookSKU
 Family: K

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
 Manufacturer: ASUSTeK COMPUTER INC.
 Product Name: K46CA
 Version: 1.0       
 Serial Number: BSN12345678901234567
 Asset Tag: ATN12345678901234567
 Features:
  Board is a hosting board
  Board is replaceable
 Location In Chassis: MIDDLE              
 Chassis Handle: 0x0003
 Type: Motherboard
 Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
 Manufacturer: ASUSTeK COMPUTER INC.
 Type: Notebook
 Lock: Not Present
 Version: 1.0       
 Serial Number: D1N0CX538749057     
 Asset Tag: No Asset Tag    
 Boot-up State: Safe
 Power Supply State: Safe
 Thermal State: Safe
 Security Status: None
 OEM Information: 0x00000000
 Height: Unspecified
 Number Of Power Cords: 1
 Contained Elements: 0
 SKU Number: To be filled by O.E.M.

Handle 0x0004, DMI type 10, 26 bytes
On Board Device 1 Information
 Type: Video
 Status: Enabled
 Description:  VGA
On Board Device 2 Information
 Type: Ethernet
 Status: Enabled
 Description:  GLAN
On Board Device 3 Information
 Type: Ethernet
 Status: Enabled
 Description:  WLAN
On Board Device 4 Information
 Type: Sound
 Status: Enabled
 Description:  Audio CODEC 
On Board Device 5 Information
 Type: SATA Controller
 Status: Enabled
 Description:  SATA Controller
On Board Device 6 Information
 Type: Other
 Status: Enabled
 Description:  USB 2.0 Controller
On Board Device 7 Information
 Type: Other
 Status: Enabled
 Description:  USB 3.0 Controller
On Board Device 8 Information
 Type: Other
 Status: Enabled
 Description:  SMBus Controller
On Board Device 9 Information
 Type: Other
 Status: Enabled
 Description:  Card Reader
On Board Device 10 Information
 Type: Other
 Status: Enabled
 Description:  Cmos Camera
On Board Device 11 Information
 Type: Other
 Status: Enabled
 Description:  Bluetooth

Handle 0x0005, DMI type 11, 5 bytes
OEM Strings
 String 1: l9OvKp5b-KLu9
 String 2: Kdm0Drd4x8qsS
 String 3: 7hXVpJ2-BX+mB
 String 4: 90NPVA415Q12145013RU
 String 5:  
 String 6:  
 String 7:  
 String 8:  
 String 9:  
 String 10:  

Handle 0x0006, DMI type 12, 5 bytes
System Configuration Options
 Option 1: DSN:2S8R9JDE052016                  
 Option 2: DSN:83C347C44A06                    
 Option 3: DSN:60A44C743C38                    
 Option 4: SMI:00B2CA

Handle 0x0007, DMI type 32, 20 bytes
System Boot Information
 Status: No errors detected

Handle 0x0008, DMI type 7, 19 bytes
Cache Information
 Socket Designation: CPU Internal L2
 Configuration: Enabled, Not Socketed, Level 2
 Operational Mode: Write Through
 Location: Internal
 Installed Size: 512 kB
 Maximum Size: 512 kB
 Supported SRAM Types:
  Unknown
 Installed SRAM Type: Unknown
 Speed: Unknown
 Error Correction Type: Multi-bit ECC
 System Type: Unified
 Associativity: 8-way Set-associative

Handle 0x0009, DMI type 7, 19 bytes
Cache Information
 Socket Designation: CPU Internal L1
 Configuration: Enabled, Not Socketed, Level 1
 Operational Mode: Write Through
 Location: Internal
 Installed Size: 128 kB
 Maximum Size: 128 kB
 Supported SRAM Types:
  Unknown
 Installed SRAM Type: Unknown
 Speed: Unknown
 Error Correction Type: Parity
 System Type: Data
 Associativity: 8-way Set-associative

Handle 0x000A, DMI type 7, 19 bytes
Cache Information
 Socket Designation: CPU Internal L3
 Configuration: Enabled, Not Socketed, Level 3
 Operational Mode: Write Back
 Location: Internal
 Installed Size: 3072 kB
 Maximum Size: 3072 kB
 Supported SRAM Types:
  Unknown
 Installed SRAM Type: Unknown
 Speed: Unknown
 Error Correction Type: Multi-bit ECC
 System Type: Unified
 Associativity: 12-way Set-associative

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

Handle 0x000C, DMI type 4, 42 bytes
Processor Information
 Socket Designation: SOCKET 0
 Type: Central Processor
 Family: Core i5
 Manufacturer: Intel(R) Corporation
 ID: A9 06 03 00 FF FB EB BF
 Signature: Type 0, Family 6, Model 58, Stepping 9
 Flags:
  FPU (Floating-point unit on-chip)
  VME (Virtual mode extension)
  DE (Debugging extension)
  PSE (Page size extension)
  TSC (Time stamp counter)
  MSR (Model specific registers)
  PAE (Physical address extension)
  MCE (Machine check exception)
  CX8 (CMPXCHG8 instruction supported)
  APIC (On-chip APIC hardware supported)
  SEP (Fast system call)
  MTRR (Memory type range registers)
  PGE (Page global enable)
  MCA (Machine check architecture)
  CMOV (Conditional move instruction supported)
  PAT (Page attribute table)
  PSE-36 (36-bit page size extension)
  CLFSH (CLFLUSH instruction supported)
  DS (Debug store)
  ACPI (ACPI supported)
  MMX (MMX technology supported)
  FXSR (FXSAVE and FXSTOR instructions supported)
  SSE (Streaming SIMD extensions)
  SSE2 (Streaming SIMD extensions 2)
  SS (Self-snoop)
  HTT (Multi-threading)
  TM (Thermal monitor supported)
  PBE (Pending break enabled)
 Version: Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz
 Voltage: 10.7 V
 External Clock: 100 MHz
 Max Speed: 3800 MHz
 Current Speed: 1700 MHz
 Status: Populated, Enabled
 Upgrade: Socket rPGA988B
 L1 Cache Handle: 0x0009
 L2 Cache Handle: 0x0008
 L3 Cache Handle: 0x000A
 Serial Number: Not Specified
 Asset Tag: Fill By OEM
 Part Number: Fill By OEM
 Core Count: 2
 Core Enabled: 2
 Thread Count: 4
 Characteristics:
  64-bit capable

Handle 0x000D, DMI type 17, 34 bytes
Memory Device
 Array Handle: 0x000B
 Error Information Handle: Not Provided
 Total Width: 64 bits
 Data Width: 64 bits
 Size: 4096 MB
 Form Factor: SODIMM
 Set: None
 Locator: ChannelA-DIMM0
 Bank Locator: BANK 0
 Type: DDR3
 Type Detail: Synchronous
 Speed: 1600 MHz
 Manufacturer: Hynix/Hyundai
 Serial Number: 1072CE54
 Asset Tag: 9876543210
 Part Number: HMT351S6CFR8C-PB  
 Rank: 2
 Configured Clock Speed: 1600 MHz

Handle 0x000E, DMI type 20, 35 bytes
Memory Device Mapped Address
 Starting Address: 0x00000000000
 Ending Address: 0x000FFFFFFFF
 Range Size: 4 GB
 Physical Device Handle: 0x000D
 Memory Array Mapped Address Handle: 0x0013
 Partition Row Position: Unknown
 Interleave Position: 1
 Interleaved Data Depth: 2

Handle 0x000F, DMI type 17, 34 bytes
Memory Device
 Array Handle: 0x000B
 Error Information Handle: Not Provided
 Total Width: Unknown
 Data Width: Unknown
 Size: No Module Installed
 Form Factor: DIMM
 Set: None
 Locator: ChannelA-DIMM1
 Bank Locator: BANK 1
 Type: Unknown
 Type Detail: None
 Speed: Unknown
 Manufacturer: [Empty]
 Serial Number: [Empty]
 Asset Tag: 9876543210
 Part Number: [Empty]
 Rank: Unknown
 Configured Clock Speed: Unknown

Handle 0x0010, DMI type 17, 34 bytes
Memory Device
 Array Handle: 0x000B
 Error Information Handle: Not Provided
 Total Width: 64 bits
 Data Width: 64 bits
 Size: 8192 MB
 Form Factor: SODIMM
 Set: None
 Locator: ChannelB-DIMM0
 Bank Locator: BANK 2
 Type: DDR3
 Type Detail: Synchronous
 Speed: 1600 MHz
 Manufacturer: Samsung
 Serial Number: B2454C2B
 Asset Tag: 9876543210
 Part Number: M471B1G73BH0-CK0  
 Rank: 2
 Configured Clock Speed: 1600 MHz

Handle 0x0011, DMI type 20, 35 bytes
Memory Device Mapped Address
 Starting Address: 0x00100000000
 Ending Address: 0x002FFFFFFFF
 Range Size: 8 GB
 Physical Device Handle: 0x0010
 Memory Array Mapped Address Handle: 0x0013
 Partition Row Position: Unknown
 Interleave Position: 2
 Interleaved Data Depth: 2

Handle 0x0012, DMI type 17, 34 bytes
Memory Device
 Array Handle: 0x000B
 Error Information Handle: Not Provided
 Total Width: Unknown
 Data Width: Unknown
 Size: No Module Installed
 Form Factor: DIMM
 Set: None
 Locator: ChannelB-DIMM1
 Bank Locator: BANK 3
 Type: Unknown
 Type Detail: None
 Speed: Unknown
 Manufacturer: [Empty]
 Serial Number: [Empty]
 Asset Tag: 9876543210
 Part Number: [Empty]
 Rank: Unknown
 Configured Clock Speed: Unknown

Handle 0x0013, DMI type 19, 31 bytes
Memory Array Mapped Address
 Starting Address: 0x00000000000
 Ending Address: 0x002FFFFFFFF
 Range Size: 12 GB
 Physical Array Handle: 0x000B
 Partition Width: 4

Handle 0x0018, DMI type 131, 64 bytes
OEM-specific Type
 Header and Data:
  83 40 18 00 31 00 00 00 00 00 00 00 00 00 00 00
  F8 00 59 1E 00 00 00 00 01 20 00 00 01 00 08 00
  E0 04 00 00 00 00 00 00 C8 00 FF FF 00 00 00 00
  00 00 00 00 66 00 00 00 76 50 72 6F 00 00 00 00

Handle 0x0019, 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

Handle 0x001A, DMI type 127, 4 bytes
End Of Table

Para conocer sobre la memoria ram en específico, teclear el siguiente comando:
sudo dmidecode -t 16
Y mostrará el c
# dmidecode 2.12
SMBIOS 2.7 present.

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

Ahora sí quieren saber el máximo de memoria ram soportada de manera directa, entonces el comandos es:
sudo midecode |grep -i "Maximum Capacity:"  | uniq
La salida será:
Maximum Capacity: 32 GB

Y eso sería todo. Muchas gracias por visitar.