I server di oggi vengono comunque normalmente dotati di schede video con parecchi MB di RAM dedicata estremamente veloce che però non sarà mai utilizzata perchè difficilmente si installerà un server Linux con l’interfaccia grafica X.
Perchè non utilizzare questo “ben di Dio” come memoria vera e propria da affiancare alla RAM tradizionale? Innanzi tutto una premessa: Linux già incorpora una memoria chiamata “swap” che non è altro che un’area di disco che subentra in aito della memoria RAM quando questa si satura. L’hard disk del nostro server, però, non potrà mai competere con la RAM quanto a prestazioni, per cui è importante dotare il nostro server di RAM sufficiente a limitare il più possibile lo swap sul disco che penalizza le prestazioni complessive del nostro server.
In questo articolo vi spiegherò come configurare il nostro server Linux perchè utilizzi la RAM della scheda video come memoria di swap prima di utilizzare lo swap tradizionale su Hard Disk.
Innanzi tutto, verifichiamo quanta video ram abbiamo a disposizione:
lspci -vvv
Tra i vari device che saranno elencati ci sarà la scheda video. Ad esempio:
01:00.0 VGA compatible controller: ATI Technologies Inc NI Whistler [AMD Radeon HD 6600M Series] (prog-if 00 [VGA controller]) Subsystem: Acer Incorporated [ALI] Device 0513 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-SERR- Region 0: Memory at b0000000 (64-bit, prefetchable) [size=256M] Region 2: Memory at c0300000 (64-bit, non-prefetchable) [size=128K] Region 4: I/O ports at 3000 [size=256] Expansion ROM at c0340000 [disabled] [size=128K] Capabilities: Kernel driver in use: radeon Kernel modules: radeon
Dobbiamo trovare la “region” di tipo “prefetchable”, che è normalmente quella più grande (nel mio caso 256MB): memorizziamo l’indirizzo di partenza (b0000000).
Ora dobbiamo fare un po’ di calcoli in esadecimale in quanto è comunque consigliabile non utilizzare l’intera videoram ma lasciarne qualche MB all’inizio in uso alla scheda: a tal proposito utilizzeremo il modulo slram che richiede in input due valori esadecimali: l’indirizzo di partenza e la quantità di ram.
Ad esempio, per quanto riguarda l’indirizzo di partenza, con un totale di 2^28 bytes (256M) videoram, volendo lasciare 2^24 (16M) per le normali funzionalità (probabilmente meno va comunque bene), l’indirizzo iniziale è 2^24 bytes oltre l’indirizzo di partenza (b0000000), quindi b1000000.
La quantità totale sarà calcolata trasformando in esadecimale il valore della vRAM totale – quella assegnata alle normali funzionalità video: nel nostro caso 240 MB -> 251658240 bytes -> F000000.
Ora andiamo a modificare il file /etc/modprobe.d/modprobe.conf per settare i parametri appena calcolati:
/etc/modprobe.d/modprobe.conf options slram map=VRAM,0xb1000000,+0xF000000
Quindi carichiamo i moduli necessari:
modprobe slram modprobe mtdblock
Il secondo modulo serve per creare un disco fisico utilizzando una regione mappata dal modulo slram: difatti, una volta caricato il modulo, apparirà un nuovo device /dev/mtdblock0 sul quale creeremo il disco di swap con priorità più elevata rispetto allo swap su hard disk:
mkswap /dev/mtdblock0 && swapon /dev/mtdblock0 -p 10
