TIP Speeding up portage with tmpfs
Uit Gentoo Linux Wiki
| Terminals / Shells • Network • X Window System • Portage • System • Filesystems • Kernel • Other |
Inhoud |
[bewerken] Inleiding
Het compileren van broncode kan lang duren. Na enige aanpassingen kon ik Gentoo-Portage:x11-base/xorg-x11 (-minimal!) in ongeveer 15 minuten compileren op een 1800+ AMD cpu.
[bewerken] Hoe is dit mogelijk?
Met tmpfs gekoppeld aan /var/tmp/portage gebeurt het compileren volledig in RAM ipv de harde schijf, wat waarschijnlijk het traagste gedeelte van de pc is. Dit behoedt je harde schijf ook van fragmentatie waardoor je ook een sneller systeem krijgt en een langere levensduur van de harde schijf.
[bewerken] Benodigdheden/Voorwaarden
Je hebt minstens 512MB RAM nodig voor een Desktop Omgeving als KDE of GNOME. Sommige grote paketten zoals Firefox hebben zelfs meer geheugen nodig.
Wees er ook zeker van dat tmpfs ingeschakeld is in de kernel. Zie TIP Kernel Configuration voor meer info over het configureren van de kernel.
[bewerken] Hoeveel geheugen zal er gebruikt worden?
300 MB gekoppeld is niet voldoende voor:
450 MB gekoppeld is niet voldoende voor:
500 MB gekoppeld is voldoende voor:
- GCC (zonder een enkele geactiveerde USE flag)
- mozilla-firefox
850 MB is voldoende voor:
Het is mogelijk om KDE te bouwen met 350 MB.
Bij grote toepassingen kan het aantal inodes ook een probleem vormen. Eén inode = één bestand en broncode bevat een hoop kleine bestanden. Voor grote bestanden moet je dus het aantal inodes vergroten.
[bewerken] Set-up
Voer dit uit als root:
| Code: mounting tmpfs |
|
voor 50% RAM: mount -t tmpfs tmpfs /var/tmp/portage voor 850 MB RAM en één millioen inodes: mount -t tmpfs tmpfs -o size=850M,nr_inodes=1M /var/tmp/portage |
Controleer of het gekoppeld is
df -h | grep tmpfs
Je kan ook tmpfs koppelen door dit toe te voegen aan /etc/fstab :
none /var/tmp/portage tmpfs size=1000M,nr_inodes=1M 0 0
en koppel met :
mount -a
Indien je een grote swap partitie hebt kan je ook meer RAM koppelen. Ik heb 5GB swap, 1GB tmpfs gekoppeld aan /var/tmp/portage en 3GB aan /tmp. Tmpfs swapping is zéér snel.
[bewerken] Testen
Emerge iets!
# emerge xorg-x11
Gebruik genlop om te controleren of het sneller is.
| Code: Example (from my 1400 centrino celeron) |
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. |
[bewerken] Miniscript
Een klein script om tmpfs te koppelen. Ga naar een binair pad $PATH zoals /usr/local/bin, en creëer temerge met je $EDITOR.
| File: 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 en gebruik temerge ipv emerge om te emergen, gebruik emerge om te fetchen en pretenden.
Bemerkingen of complimenten? Gelieve de Overleg sectie te gebruiken.
