Portál AbcLinuxu, 25. dubna 2024 08:38

Gentoo Linux - Prelink a Psyco

3. 3. 2006 | Matej Gagyi
Články - Gentoo Linux - Prelink a Psyco  

Ďalšie urýchľovanie systému. Tentokrát upravíme knižnice, spustitelné binárky a programy písané v Pythone (konkrétne Portage).

Prelink

Používatelia desktopového prostredia KDE môžu za prelink ďakovať Jakubovi Jelinekovi z RedHatu. Prelink upravuje knižnice a binárky tak, aby sa programy spúšťali rýchlejšie (hlavne aplikácie písané v jazyku C++, napríklad KDE).

Inštalácia

V Gentoo nie je inštalácia prelinku nič zložité (zväčša):

$ su -
Password:
# emerge prelink

Prelink sa však nemusí nainštalovať, ak na prelinkovanie nemáte pripravený systém. Celý systém by mal byť skompilovaný s USE flagom pic. Pridajte ho do súboru /etc/make.conf:

USE="pic"

a prekompilujte celý systém:

$ su -
Password:
# emerge --update --deep --newuse world

alebo:

$ su -
Password:
# emerge -uDN world

Nastavenia a spustenie prelinku

Po úspešnom nainštalovaní prelinku odporúčam upraviť jeho nastavenia v súbore /etc/env.d/60prelink. Pridajte adresáre /opt, /mnt, /tmp a /var/tmp do premennej PRELINK_PATH_MASK:

PRELINK_PATH_MASK="/opt:/mnt:/tmp:/var/tmp:..."

Prelink sa bude týmto adresárom vyhýbať a prelinkovanie bude trvať kratšie. Môžete pridať aj ďalšie adresáre, v ktorých sa nenachádzajú binárky ani knižnice. To isté platí aj pre mená súborov, ktoré ma prelink vynechať (napríklad: *.txt, *.html, *.odt apod.)

Teraz vygenerujte konfiguračné súbory systému (vrátane /etc/prelink.conf):

$ su -
Password:
# env-update
>>> Regenerating /etc/ld.so.cache...

Spustenie a používanie prelinku

Teraz stačí spustiť prelinkovanie a dať si šálku svojho obľúbeného kofeínového nápoja, pretože to bude chvíľu trvať:

$ su -
Password:
# prelink -amR

Parametre:

-a, --all
Prelinkuje všetko, čo nájde.
-m, --conserve-memory
Zmenší pamäť potrebnú pre spustené súbory.
-R, --random
Zvýši bezpečnosť prelinkovaných programov.
-q, --quick
Použite po inštalovaní nových verzií knižníc. Zrýchli opätovné prelinkovanie.
-u, --undo
Vráti všetky zmeny, ktoré boli na knižniciach a binárkach urobené.

POZOR! Pred prelinkovaním si dajte pozor, aby ste mali dostatok voľného miesta na disku. Stačí len pár megabajtov, ale radšej si ich uvoľnite viac (aspoň 100MB).

Prelink a KDE

Štartovanie KDE sa môže zrýchliť až o 50 %, ak mu oznámite, že už je prelinkované. Stačí nastaviť premennú prostredia KDE_IS_PRELINKED.

Používatelia Gentoo tak môžu urobiť v súbore /etc/env.d/99kdeenv:

KDE_IS_PRELINKED=1

Aby sa zmena prejavila, treba obnoviť konfiguráciu systému a načítať nanovo vygenerovaný súbor /etc/profile:

$ su -
Password:
# env-update
# exit
$ source /etc/profile

Psyco

Stále opakujem, že Portage je veľmi pomalý. Nastal čas prestať o tom rozprávať a niečo s tým urobiť. Samozrejme, ak máte výkonný hardvér, rýchlosť Portage vám prekážať nemusí. Vlastníkov starších počítačov teraz prichádza vykúpiť Psyco.

Ako Psyco funguje

Portage je celý napísaný v programovacom jazyku Python. Python je interpretovaný jazyk, takže je omnoho pomalší ako kompilované jazyky (C, C++, Pascal a podobne).

Psyco kompiluje program do binárnej formy počas behu programu. Skompilovaný program pracuje nezávisle na interpreteri Pythonu, a preto pracuje rýchlejšie. Je to princíp JIT (just-in-time) kompilátora, ale Psyco je trochu odlišný.

Psyco totiž každý blok (časť programu) skompiluje do viacerých binárnych verzií. Každá verzia je optimalizované pre inú situáciu behu programu. Nevýhoda Psyca je, že potrebuje veľké množstvo pamäte. Presné údaje sa mi nepodarilo zistiť.

Podľa autora Psyco urýchľuje Python priemerne štvornásobne a matematické výpočty až desaťnásobne. Moje benchmarky ukazujú nasledovné údaje:

Test na procesore AMD AthlonXP 2800+

Program emerge bez Psyco (tretie spustenie):

# time original_emerge -uDNpv world > /dev/null

real 0m3.211s
user 0m2.917s
sys 0m0.242s

Program emerge s Psyco (tretie spustenie):

# time emerge -uDNpv world > /dev/null

real 0m2.822s
user 0m2.534s
sys 0m0.248s

Test na procesore AMD K6-2 400MHz

Program emerge bez Psyco (tretie spustenie):

# time original_emerge -uDNpv world > /dev/null

real 0m58.200s
user 0m53.159s
sys 0m2.928s

Program emerge s Psyco (tretie spustenie):

# time emerge -uDNpv world > /dev/null

real 0m44.759s
user 0m39.958s
sys 0m2.752s

Inštalácia

Inštalácia je jednoduchá a rýchla:

# emerge psyco

Psyco musí byť aktivované z programu, ktorý chceme urýchliť, preto musíme upraviť súbor /usr/bin/emerge. Najprv si urobte kópiu:

# cd /usr/bin
# cp emerge original_emerge

Do súboru /usr/bin/emerge pridajte riadky označené zelenou farbou:

#!/usr/bin/python -O
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-src/portage/bin/emerge,v 1.345.2.31 2005/05/18 15:19:52 jstubbs Exp $

import os,sys
os.environ["PORTAGE_CALLER"]="emerge"
sys.path = ["/usr/lib/portage/pym"]+sys.path

import portage
#Added for Psyco
try:
import psyco
psyco.full()
except ImportError:
pass
#Done


import emergehelp,xpak,string,re,commands,time,shutil,traceback,\
atexit,signal,socket,types

A hotovo, program emerge by mal byť citeľne rýchlejší. Ak Gentoo nepoužívate, ale chcete Psyco využiť, stiahnite si ho z domovskej stránky Psyco.

Seriál Gentoo Linux (dílů: 4)

První díl: Gentoo Linux - majstrovská inštalácia, poslední díl: Gentoo Linux - Prelink a Psyco.
Předchozí díl: Gentoo Linux - rýchlosť kompilácie (ccache a distcc)

Související články

Další články z této rubriky

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.