ot peio(28-01-2004)

reiting (10)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Sudurzhanie
  1. Uvod
  2. Instalirane na dictcc
  3. Instalirane na ccache
  4. Startirane na dictccd
  5. Izpolzvane na dictccd
  6. Izpolzvane na ccache
  7. Testove i rezultati
  8. Zaklyuchenie i blagodarnosti

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:
build
make -j 4

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 >>