Casi no tengo memoria RAM, pero tengo mucha memoria de video (ilógico pero puede ser posible ), te muestro como hacer una memoria swap de tu memoria de video.
¿hay algún modo de convertir mi memoria de video en memoria swap?,
¿tendré alguna ventaja en hacerla la swap en mi tarjeta de video que en
mi hd?, la respuesta es que sí, por el simple hecho que: recordemos que la velocidad de escritura en un hd es más lenta que en una memoria y la memoria de video es muy rápida , manos a la obra:
Importante yo asumo que eres un usuario que sabe:
- Recompilar el kernel.
- Usar una calculadora hexadecimal o convertir de decimal a hexadecimal.
- Que tienes una tarjeta de video real (no compartida con la ram).
- Por supuesto que yo no me hago responsable si le sucede algo a tu pc.
Primero tenemos bajarnos los kernel sources, ¿no sabes dónde? picale aquí, ahora haces el proceso clásico para recompilar tu kernel pero le agregas soporte para:
- mtd_block y mtd_char
- mtd_slram
- mtd_phram (estas es una alternativa y sucesor para slram)
- mtd_ram.
####Busca estas opciones####
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
Ahora buscams la sección de MTD (Memory Technology Devices)
# Memory Technology Devices (MTD)
#
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=m
# CONFIG_MTD_BLKDEVS is not set
CONFIG_MTD_BLOCK=m # is not set
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
# CONFIG_SSFDC is not set
#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
CONFIG_MTD_RAM=m
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_TS5500 is not set
CONFIG_MTD_PLATRAM=m
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_DATAFLASH is not set
# CONFIG_MTD_M25P80 is not set
CONFIG_MTD_SLRAM=m
CONFIG_MTD_PHRAM=m
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set
#
# OneNAND Flash Device Drivers
#
# CONFIG_MTD_ONENAND is not set
Ahora recompila e instala tu kernel como normalmente lo haces y arranca el sistema con tu nuevo kernel, lo que buscamos son los rangos de la memoria pci una forma de obtenerlos es usando lspci -vvv , una vez que obtienes los rangos escribelos en tu rc.local
# for using vram as swap
modprobe slram map=VRAM,Rango_de_Inicio,+0xRango_FinalR
modprobe mtdchar #probably unnecessary
modprobe mtdblock
mkswap /dev/mtdblock0
swapon /dev/mtdblock0 -p 10 #Mayor prioridad que el hd (SWAP)
Ejemplo:
lspci -vvv
01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AR [Radeon 9600] (prog-if 00 [VGA])
Subsystem: PC Partner Limited Unknown device 0830
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (2000ns min), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
'' Region 0: Memory at e0000000 (32-bit, prefetchable) [size=256M]''
Region 1: I/O ports at c800 [size=256]
Region 2: Memory at ff8f0000 (32-bit, non-prefetchable) [size=64K]
Expansion ROM at ff8c0000 [disabled] [size=128K]
Capabilities: [58] AGP version 2.0
Status: RQ=80 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
Command: RQ=32 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x4
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
El rango inicia en 0xe0000000, con un tamaño de 256MiB +0x10000000, ahora vamos a dejar libres 16Mib esto es 0x01000000, entonces los rangos de inicio y fin son 0x01000000 a 0xe0000000.
Eso es todo .
Si alguien me hace el favor de pasarlo al wiki de archlinux.com.ar .
Referencias:
Archlinux Wiki
MTD Website
Gentoo Wiki
|