Portál AbcLinuxu, 19. května 2024 17:41
Ď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).
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).
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
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...
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
-m, --conserve-memory
-R, --random
-q, --quick
-u, --undo
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).
Š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
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.
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:
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
Program emerge
bez Psyco (tretie spustenie):
Program emerge
s Psyco (tretie spustenie):
# time emerge -uDNpv world > /dev/null
real 0m44.759s
user 0m39.958s
sys 0m2.752s
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.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.