Swapping for dummies
Originariamente inviato da
barondem
...il limite più grande sul nostro telefono è la ram...
...quindi ciò rallenta il dispositivo e credo ne riduca anche l'autonomia...
...provare ad implementare un qualche swap?
...Tempo fa ne avevo visto uno su xda per il next che in pratica metteva tutta la partizione data sulla 2a partizione della microsd e la partizione data originale la usa per lo swap...
...
In effetti la poca Ram rende difficile l'utilizzo di un sistema Multitasking come Android al meglio delle proprie capacità...
...lo swap è sicuramente uno stratagemma che può aiutare; personalmente non lo uso... in realtà non è - tecnicamente parlando - un'estensione della memoria ma una specie di area di parcheggio che si riempie e si svuota all'occorrenza...
Ho seguito anche io con molta attenzione un paio di Threads su xda dove usano la partizione /data proprio come swap...
Geniale ma pericoloso: se rompo la microSD il telefono sarà morto finchè non ne inserisco un'altra nuova... perdendo forse la possibilità di usarlo anche nelle emergenze... quindi opzione da usare con le molle...
Tuttavia nessuno ci impedisce di provare al volo questa opzione!
In fondo dentro al Nostro Jelly Bean c'è già tutto quello che serve...
...sarà un pò come provare Ubuntu da CD senza installare nulla...
1 Mi collego al telefono con "adb shell" (o posso anche usare l'emulatore terminale)!
codice:
doc@quantal:~$ adb shell
root@android:/ #
2 controllo com'è attualmente la situazione della memoria:
codice:
root@android:/ # cat /proc/meminfo
MemTotal: 286180 kB
MemFree: 3492 kB
Buffers: 888 kB
Cached: 31992 kB
SwapCached: 0 kB
...
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
...
hmm... abbastanza in crisi in effetti...
3 ...creo un file vuoto di circa 100Mega
codice:
root@android:/ # dd if=/dev/zero of=/sdcard/swap.test bs=1024k count=100000
100000+0 records in
100000+0 records out
102400000 bytes transferred in 28.870 secs (3546934 bytes/sec)
root@android:/ #
N.B. nel mio caso l'ho fatto sulla SDcard non avendo scripts che mi liberano /data, ma sarebbe furbo farlo lì dentro per prestazioni un pò migliori (/data/swap.test)...
4 lo formatto come swap:
codice:
root@android:/ # mkswap /sdcard/swap.test
Setting up swapspace version 1, size = 102395904 bytes
root@android:/ #
5 e dico al sistema di usarlo subito!
codice:
root@android:/ # swapon /sdcard/swap.test
root@android:/ #
Vediamo cosa è cambiato:
codice:
root@android:/ # cat /proc/meminfo
MemTotal: 286180 kB
MemFree: 29520 kB
...
SwapTotal: 99996 kB
SwapFree: 99996 kB
...
Eccolo qua! Il sistema lo stà già utilizzando...
6 stresso un pò qualche app e ricontrollo:
codice:
...
SwapTotal: 99996 kB
SwapFree: 68668 kB
Dirty: 56 kB
Writeback: 88 kB
...
Chiaramente le prestazioni sono tutte da verificare...
...tutto questo, almeno, subito e senza partizionare in tre la SD o senza cambiare i file di boot per rendere esclusiva la partizione di swap... ecc...
...chissà quanto ci vuole a fare uno script al riguardo da mettere in init.d, mah...
More Over...
In realtà nel Kernel c'è già di meglio...
Se guardo nelle "{} opzioni sviluppatore -> Prestazioni -> Gestione Memoria"
ho la possibilità di attivare queste due opzioni:
- zRam (18%)
- Fusione pagine Kernel
e dopo il reboot scopro di avere una specie di swap della memoria proprio nella memoria...
codice:
root@android:/ # cat /proc/meminfo
MemTotal: 286180 kB
MemFree: 33756 kB
...
SwapTotal: 51508 kB
SwapFree: 50412 kB
...
In realtà il modulo zRam del kernel comprime semplicemente un pò tutta la RAM e ne usa una parte come Swap...
...meglio?
...peggio?
...ai posteri...
...ma perchè non provarlo per un pò...