TIP Accélérez Portage

Un article de Gentoo Linux Wiki.

Sommaire

[modifier] Introduction

Compiler un logiciel à partir des sources prends du temps. Un peu de bidouillage m'a permis de compiler xorg-x11 en plus ou moins 15 minutes sur un Athlon 1800+

[modifier] Quelle quantité de RAM sera utilisée?

300 Mb de RAM montée n'est pas suffisant pour compiler :

500 Mb de RAM montée est suffisant pour:

  • GCC (sans aucun USE flags activés)

850 Mb de RAM montée est suffisant pour:

Il est possible de compiler KDE avec 350 Mb. Avec les grosses applications, survient aussi le problème de Inoeuds. Un Inoeud = Un fichier et les codes source comportent un grand nombre de fichiers. Pour celles-ci, il vous faudra donc augmenter le nombre d'Inoeuds.

[modifier] Mise en oeuvre

En tant que Root, exécutez ceci:

Code : monter tmpfs

pour 50% de votre RAM:

mount -t tmpfs tmpfs /var/tmp/portage

pour à peu près 850 MB de votre RAM et un million d'Inoeuds:

mount -t tmpfs tmpfs -o size=850M,nr_inodes=1M /var/tmp/portage


Verifiez qu'elle est bien montée:

df -h | grep tmpfs

Vous pouvez aussi monter tmpfs au démarrage en ajoutant ceci dans votre /etc/fstab :

none                    /var/tmp/portage   tmpfs  size=1000M,nr_inodes=1M         0 0

et le monter avec:

mount -a

Vous pouvez bien sur en accroitre la taille selon votre swap.

[modifier] Tests

A vos marques! Prets! Emergez!

Utilisez genlop afin d'en verifier le gain de vitesse.

Code : Exemple (d'un 1400 centrino)
emerge genlop -n
genlop -t xorg-x11
* x11-base/xorg-x11

Wed Apr  6 17:33:07 2005 >>> x11-base/xorg-x11-6.8.2-r1
  merge time: 7 minutes and 9 seconds.

[modifier] Miniscript

Un petit script qui montera tmpfs pour vous. Allez à n'importe quel répertoire de binaires dans votre $PATH, tel que /usr/local/bin, et créez temerge avec votre $EDITOR.

Fichier : temerge
#!/bin/bash
MEMSIZE=850M
mounted=false
 
. /sbin/functions.sh
 
mounttmpfs() {
     mount -t tmpfs tmpfs -o size=$MEMSIZE /var/tmp/portage
     mounted="true"
}

compile() {
     einfo "emerging ${*}"
          emerge ${*}
}

unmount() {
     ebegin "unmounting tmpfs"
          umount -f /var/tmp/portage
     eend $?
}

ebegin "Mounting $MEMSIZE of memory to /var/tmp/portage"
if [ -z "$(mount | grep /var/tmp/portage)" ]
then
     mounttmpfs
else
     eerror "tmpfs already mounted!"
     exit 0
fi
eend $?

compile ${*}
 
if [ -n "$mounted" ]
then
     unmount
fi

chmod u+x temerge et utilisez temerge en lieu et place de emerge pour installer les logiciels de portage. Utilisez emerge afin de rechercher et simuler.


Inbreed 17:31, 1 Jul 2005 (GMT) --Traduit par Mordred 22:15, 22 Dec 2005 (CET)