URL: https://linuxfr.org/users/khalahan/journaux/linux-presque-enti%C3%A8rement-en-ram Title: Linux presque entièrement en RAM Authors: khalahan Date: 2008年08月09日T16:25:58+02:00 Tags: debian et firefox Score: 0 Bonjour, vu le prix de la ram actuellement (35/36€ les 2Go de DDR2), et celui des SSD de bonne qualité (cher !), je me suis dit : pourquoi ne pas utiliser la ram comme un disque dur pour accélérer mon PC ? Cette solution a été testée sur un eeePC 701, avec 2Go de RAM. 1Go de RAM a été dédié pour les fichiers système en RAM, il faut donc soit avoir un système light qui fait moins de 1Go (trop tard, je viens de tester KDE 4.1, je suis passé de 1Go à 1,5Go :p [et je n'ai pas tout installé]), soit ne charger que certains dossiers ou sous-dossiers. Pour ma part j'ai choisi : /bin /sbin /lib /usr /var => 900Mo (oui, j'ai une Debian light :p) (on peut utiliser des sous-dossiers sans problème) Voici mon petit script pour initialiser les "ramdisk" et synchroniser les données entre la ram et le disque dur. Le principe est simple : - creation d'un tmpfs de 1000Mio - copie de chaque dossier dans ce tmpfs - montage de chaque dossier du tmpfs par dessus les originaux - remount de / dans un dossier à part pour pouvoir synchroniser les modifications Fichier : /etc/init.d/toram #!/bin/bash ROOTDEST=/mnt/root DEST=/mnt/tmpfs FOLDERS="/bin /sbin /lib /usr /var" case "1ドル" in £spaces£ £/spaces£start) £spaces£ £/spaces£if [ -n "`df |grep /mnt/tmpfs`" ]; then £spaces£ £/spaces£echo 'Déjà chargé.' £spaces£ £/spaces£else £spaces£ £/spaces£mount --bind / $ROOTDEST £spaces£ £/spaces£mount -t tmpfs none $DEST -o size=1000m £spaces£ £/spaces£for folder in `echo $FOLDERS` ; do £spaces£ £/spaces£mkdir -p $DEST$folder £spaces£ £/spaces£rsync -aru $folder/ $DEST$folder £spaces£ £/spaces£mount --bind $DEST$folder $folder £spaces£ £/spaces£done £spaces£ £/spaces£fi £spaces£ £/spaces£;; £spaces£ £/spaces£sync) £spaces£ £/spaces£for folder in `echo $FOLDERS` ; do £spaces£ £/spaces£echo "Syncing folder : $folder" £spaces£ £/spaces£rsync -aru $folder/ $ROOTDEST$folder £spaces£ £/spaces£done £spaces£ £/spaces£;; £spaces£ £/spaces£*) £spaces£ £/spaces£echo "Usage: /etc/init.d/toram {start|stop|sync}" £spaces£ £/spaces£exit 1 esac exit 0 Pour être sûr que les applications utilisent les nouveaux dossiers montés, il faut les monter le + tôt possible au démarrage de la machine. Pour mes tests, je passe en "init 1" et je lance le script "/etc/init.d/toram start". Cela prend 1m30s pour 1Go de données, sur ce SSD avec des débits faibles. Pour éviter d'avoir un temps de boot aussi long à chaque fois, il vaut mieux utiliser la mise en veille :p Pour synchroniser les données, il suffit d'un "/etc/init.d/toram sync". La fonction stop n'a pas été écrite. Voici la technique manuelle : #init 1 #/etc/init.d/toram sync #umount "de chaque dossier" ou reboot (umount -l, pour forcer le démontage) Arès qq jours de tests, il s'avère que sur cette machine, on ne gagne rien de visible, pour les raisons suivantes : - le SSD, bien que lent en débit, a un temps d'accès très faible (<1ms). La différence avec la RAM est faible. - le CPU est à la traîne pour les calculs : c'est lui qui limite clairement les performances de l'ensemble. J'ai aussi testé en mettant mon profile firefox en RAM (/home/user/.mozilla), et je n'ai pas vu de différence notable non plu ! Ma conclusion serait que sur un PC avec HDD mécanique le gain serait certainement visible : - le temps du 1er chargement en RAM serait bien réduit (75-90Mo/s pour un disque récent contre 20-25 pour le SSD du eeePC 701) - la différence de temps d'accès entre le disque dur et la RAM serait vraiment visible (on le voit déjà avec un SSD, le temps de boot de linux est + court) Bref, n'hésitez pas à donner votre avis sur l'utilité d'une telle chose, à tester, en particulier sur une config complète qui nécessiterait environ 4Go de RAM dédiée pour ce système.