ot peio(28-01-2004)
reiting (10)
[ dobre ]
[ zle ]
Variant za otpechatvane
1. Uvod
Vseki ot nas e kompiliral programi ot izhoden kod i vseki znae kolko vreme i resursi otnema tova. Tazi statiia ima za tsel da vi zapoznae s dva proekta, chiiato tsel e da napraviat tozi protses po-burz.
Distcc (distcc.samba.org) razpredelia kompiliraneto na prilozheniia pisani na C, C++, Objective C ili Objective C++ mezhdu svurzani v mrezha kompyutri, kato tselta mu e da izpolzva maksimalno dobre resursite na vseki ot tiah.
TSelta na ccache (ccache.samba.org) e da keshira kod pri kompilatsiiata, koito mozhe da bude bude izpolzvan i pri posledvashti kompilatsii.
2. Instalirane na dictcc
Mnogo e veroiatno da namerite prekompiliran paket na distcc vuv vashata distributsiia, a ako takuv niama mozhe da potursite takuv na saita na proekta ili da go kompilirate ot izhoden kod. Potrebitelite na Slackware mogat da nameriat gotov paket v slackware/d/ direktoriiata na distributiva.
3. Instalirane na ccache
Za Slackware gotov paket mozhe da namerite ot slackware/d/ direktoriiata na distributiva. Tam versiiata na ccache e 2.2, a ako iskate da polzvate poslednata kum momenta na pisane 2.3 mozhe da svalite koda ot saita na proekta.
Razarhiviraneto, kompiliraneto i instaliraneto stavat s dobre poznatite ni :
ccache install |
tar zxvf ccache-2.3.tar.gz
cd ccache-2.3
./configure
make
su -c "make install" |
4. Startirane na distccd
Pri startiraneto na distccd triabva da se ukazhat hostovete mezhdu koito shte se razpredelia kompilatsiiata. Tova stava s zadavaneto im v promenliva na obkruzhenieto DISTCC_HOSTS:
distcc env setup |
export DISTCC_HOSTS='localhost host1 host2' |
Demonut distccd triabva da bude startiran na vsichki mashini, mezhdu koito shte bude razpredelena kompilatsiiata. Tova stava s podavaneto na optsiiata --daemon . S optsiiata --allow mozhem da ukazhem ip adresite, na koito e razresheno da uchastvat v protsesa. Optsiiata --user sluzhi za ukazvane na potrebitelia, kato koito shte raboti demona. Druga polezna vuzmozhnost e da ukazhem prioriteta na protsesa s optsiiata --nice. Eto primer za tova kak mozhe da startirame distccd:
distcc start |
distccd --daemon --user nobody --allow 192.168.1.0/24 |
Oshte vednuzh napomniam, che demona triabva da bude startiran na vsichki mashini, mezhdu koito shte se razpredeli kompilatsiiata.
5. Izpolzvane na dictccd
Za primerite v tazi statiia shte izpolzvame kompiliraneto na ProFtpd. Niama da se spiram na razlichnite konfiguratsionni optsii, a aktsentut shte padne vurhu izpolzvaneto na distcc. Purvo pri izpulnenieto na ./configure skripta zadavame izpolzvaneto na distcc s:
distcc & ./configure |
CC="distcc" ./configure |
Sledvashtata stupka e da ukazhem na make maksimalniia broi na ednovremennite protsesi s optsiiata -j. Preporuchitelnata stoinost e dva puti broia na protsesorite, mezhdu koito shte se izvurshva kompilatsiiata:
Sled tova rabotata po kompiliraneto triabva da zapochne i da bude razpredelena mezhdu vsichki mashini. Dobur grafichen instrument za nablyudenie na protsesa e distccmon-gnome, a ako toi lipsva na vashata sistema mozhe da polzvate tekstoviia distccmon-text.
6. Izpolzvane na ccache
Ccache se izpolzva kato se ukazhe izpolzvaneto mu predi kompilatora, koito shte polzvame :
ccache & ./configure |
CC="ccache gcc" ./configure |
Ako shte polzvame distcc i ccache ednovremenno ukazvame tova chrez :
ccache & distcc |
CC="ccache distcc" ./configure |
Logichno e da se napomni, che efektut ot ccache shte se proiavi na vtorata i i sledvashti kompilatsii, tui kato na purvata se suzdava kesha. Informatsiia za sustoianieto na kesha mozhem da poluchim kato izpulnim ccache -s. CHrez promenlivata na obkruzhenieto CCACHE_DIR se ukazva v koia direktoriia shte se suzdade kesha, direktoriiata po podrazbirane e ~/.ccache/. Maksimalniia obem na kesha se zadava chrez optsiiata -M, a maksimalniia broi na failovete chrez optsiiata -F .
Pri kompiliraneto na linuks iadroto pri protsesa na konfigurirane niamame vuzmozhnost da ukazhem optsiite za C kompilatora po gorniia nachin. I zatova triabva da go ukazhem v Makefile-a ili po dolniia nachin :
kernel build |
make -j 4 dep bzImage modules modules_install CC="ccache distcc" |
7. Testove i rezultati
Za da testvam polzata ot izpolzvaneto na distcc i ccache izpolzvah domashnata si mrezha, koiato se sustoi ot dva kompyutura svurzani direktno edin s drug s mrezhovi karti podurzhashti do 100Mbit transfer. Purvata mashina e s protsesor Duron 1200 MHZ s 256 DDR RAM , a vtorata e s protsesor Pentium III 800MHZ i 128 SDRAM. I na dvete mashini e instaliran Slackware 9.1 .
Osnovnite testove napravih vurhu kompiliraneto na ProFtpd. Normalno samo na moiata mashina se kompilira priblizitelno za 40 sekundi. Za da zameria vremeto izpolzvah komandata time -p kato vzimam predvid real vremeto (t.e. vremeto ot izvikvaneto do izhoda) kato go izpulniavah niakolko puti, za da dobiia sredna stoinost.
S pomoshta na distcc i razpredeliane na kompiliraneto mezhdu dvete mashini srednoto vreme padna do 24 sekundi.
Kogato izpolzvah samo ccache , sled kato be suzdaden kesha vremeto za vtorata i sledvashtite kompilatsii padna do 9 sekundi.
A pri suvmestnoto izpolzvaneto na ccache i distcc ne zabeliazah uskoriavane, no tova predpolagam se dulzhi na tova, che se razchita osnovno na suzdadeniia kesh.
8. Zaklyuchenie i blagodarnosti
Tozi dokument ne pretendira za tochnost i izcherpatelnost, a samo otraziava lichniia mi opit. Ako imate zabelezhki, korektsii ili dopulneniia - molia, izprashtaite gi na peio@peio.org .
Iskam da izkazha blagodarnostite si na Goran Bregovich i "Orkestura za svatbi i pogrebeniia" i spetsialno na Ogi Radivoevich, chiito nezhen glas me suprovozhdashe dokato pisah tazi statiia. Ako vi haresva muzikata im - kupete si litsenziran nositel. Te si zasluzhavat parite.
Avtor: Peio Popov
Posledna reviziia: 28.01.2004
<< PPP over SSL. CHast 1: Survur | Kak da instalirame draiverite na ATI >>
|