Ultimamente sto giocando molto con il mio netbook Acer Aspire One.
Un problema che a volte puo' dare noia e' la lentezza se inizia ad usare
la swap area che ho sul disco fisso.
Sono fortunato ad avere una memoria di 1GB, potrei tramite
una operazione pari a quella che si fanno nelle sale operatorie, portarlo
ad 1,5 GB.
Sono anche fortunato perche' ho un netbook con harddisk da
160GB, quindi cacciarci 4GB di swap non e' stato un problema, ma
sappiamo bene che i normali dischi non hanno ottime performance
per lo swap.
Mi ricordai di un articolo che trattava una funzione di Windows Vista,
cioe' quella di poter usare una memoria esterna, tipo le chiavette usb,
come "memoria veloce" e di come si potesse fare la medesima cosa
in modo simile anche su linux.
Sono molto fortunato perche' il netbook ha uno slot per schede sd, e ci sono
delle schede sd che sono molto veloci. Mi sono comprato una scheda sdhc da
4GB, con prestazioni descritte da 20MB/s.
Per prima cosa facciamo un paio di test per confrontare la velocita tra l'harddisk
e la scheda sd, per questo ho usato un collaudato programma chiamato Bonnie++.
A sinistra abbiamo i test sul disco fisso, mentre a destra abbiamo quelli sulla
scheda sd.
Machine: berlin
Size: 2G
------Sequential Output------
Per Chr: 7268 K/sec %CP 86 Per Chr: 6924 K/sec %CP 82
Block: 54369 K/sec %CP 38 Block: 12175 K/sec %CP 8
Rewrite: 22293 K/sec %CP 15 Rewrite: 7051 K/sec %CP 5
--Sequential Input-
Per Chr: 8186 K/sec %CP 89 Per Chr: 8016 K/sec %CP 87
Block: 60214 K/sec %CP 23 Block: 19909 K/sec %CP 6
Random Seeks: 105.1 /sec %CP 1 Random Seeks: 1324 /sec %CP 8
files: 16
------Sequential Create------
Create: 9497 /sec %CP 75 Create: 13527 /sec %CP 93
Delete: 16304 /sec %CP 87 Delete: 18783 /sec %CP 92
--------Random Create--------
Create: 11769 /sec %CP 90 Create: 4902 /sec %CP 41
Delete: 17274 /sec %CP 91 Delete: 12931 /sec %CP 65
Uhmmm ammetto che mi sarei aspettato qualcosa di meglio, ma c'e'
un valore che fa una bella differenza, Random Seeks
che risulta essere circa 10 volte superiore, ovviamente perche' non
essendoci parti in movimento il movimento sul disco e' estremamente
piu' rapido.
Da un primo utilizzo non vedo enormi differenze ma non ho ancora testato
tutta la questione. Comunque nel caso di voglia provare "l'ebrezza" di questo
giochino la configurazione e' alquanto semplice.
Per prima cosa bisogna individuare come linux vede la scheda sd:
Host:berlin - 19:37:50_15-09-09 - Path:/home/laforge
[laforge:9]$dmesg | grep SDHC
[ 10.656854] sdhci-pci 0000:04:00.0: SDHCI controller found [197b:2382] (rev 0)
[ 10.657436] mmc0: SDHCI controller on PCI [0000:04:00.0] using ADMA
[ 10.657476] sdhci-pci 0000:04:00.2: SDHCI controller found [197b:2381] (rev 0)
[ 11.108616] mmc0: new high speed SDHC card at address e56c
Vediamo cosa risulta sotto dev:
Host:berlin - 19:39:36_15-09-09 - Path:/home/laforge
[laforge:11]$ll /dev/mmc*
brw-rw---- 1 root disk 179, 0 2009-09-15 17:22 /dev/mmcblk0
La scheda so che e' da 4GB ma non voglio usarla tutta per lo swap file,
quindi decido di usare 1GB per lo swap e i rimanenti come filesystem.
Host:berlin - 19:42:50_15-09-09 - Path:/home/laforge
[laforge:14]$sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 3963 MB, 3963617280 bytes
128 heads, 63 sectors/track, 960 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 261 1052320+ 82 Linux swap / Solaris
/dev/mmcblk0p2 262 960 2818368 83 Linux
Per prima cosa si usa mkswap per rendere la prima partizione valida ad essere usata
come swap, mentre con mkfs.ext4 formatto la seconnda partizione.
Siccome e' una schedina che puo' essere rimossa preferisco non usare dentro
fstab i puntamenti classici al /dev ma gli UUID. Per scoprire gli UUID si usa il
comando vol_id:
Host:berlin - 19:42:52_15-09-09 - Path:/home/laforge
[laforge:15]$sudo vol_id /dev/mmcblk0p1
ID_FS_USAGE=other
ID_FS_TYPE=swap
ID_FS_VERSION=2
ID_FS_UUID=10998701-169d-4487-be05-4a369ee381be
ID_FS_UUID_ENC=10998701-169d-4487-be05-4a369ee381be
ID_FS_LABEL=FASTSWAP
ID_FS_LABEL_ENC=FASTSWAP
Host:berlin - 19:45:42_15-09-09 - Path:/home/laforge
[laforge:16]$sudo vol_id /dev/mmcblk0p2
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext4
ID_FS_VERSION=1.0
ID_FS_UUID=e45706fb-5b24-4638-b15d-5350fad9151c
ID_FS_UUID_ENC=e45706fb-5b24-4638-b15d-5350fad9151c
ID_FS_LABEL=
ID_FS_LABEL_ENC=
Per aggiungere le due partizioni basta inserire nel file /etc/fstab
le seguenti righe:
#Keyslot data partition
UUID=10998701-169d-4487-be05-4a369ee381be none swap pri=100,sw 0 0
UUID=e45706fb-5b24-4638-b15d-5350fad9151c /mnt/keyslot ext4 relatime,errors=remount-ro 0 1
Ovviamente nel vostro caso dovete usare gli UUID relativi al vostro disco!
Personalmente ho voluto dare a questa swap partition una priorita' di 100 in modo tale
che venga usato primariamente questa e poi successivametne la successiva che e'
sul harddisk.
Giusto per vedere l'uso e lo stato possiamo usare il comando swapon:
Host:berlin - 19:43:17_15-09-09 - Path:/mnt
[root:70]#swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 4000176 0 -1
/dev/mmcblk0p1 partition 1052312 2408 10
Come si vede, viene usata primariamente lo swap sulla scheda sd.
Unico problema e' se si vuole usare lo slot sd per altre cose e quindi togliere
la scheda sd attualmente configurata.
Con questo script potete disattivare l'uso della scheda e quindi poterla estrarla
tranquillamente, senza che ci siano problemi di alcun tipo.
#!/bin/bash
SWAPMNT="/dev/mmcblk0p1"
FSMNT="/dev/mmcblk0p2"
case "$1" in
start)
mount $FSMNT
swapon -p 100 $SWAPMNT
;;
stop)
umount $FSMNT
swapoff $SWAPMNT
;;
status)
mount | grep $FSMNT
swapon -s | grep $SWAPMNT
;;
esac
exit 0
Salvatelo in uno script e ricordatevi che deve essere lanciato con i privilegi di root,
con start si riattiva lo swap e il mountpoint, mentre con stop si disattiva la partizione
di swap e si smonta il mountpoint.
