Gentoo Linux

Diskusije o raznim Linux distribucijama.

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojoj distribuciji je riječ. Primjer: [Slackware]
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

ODRŽAVANJE DIO 2

Izbjegavanje sporih servera

Kako Gentoo ima skriptu koja traži i koristi najbliže i najbrže servere bilo bi logično i da ima opciju ignoriranja spoih :mgreen

Ova opcija nam omogučava da portage ne čeka na server već ukoliko prođe duže od 10 sekundi krene na sljedeći te za daljnje pakete ovaj nastavi ignorirati.
Usprkos korištenju mirrorselect za traženje najbližih i najbržih servera to nije uvijek i zadnje rješenje. Zna se desiti da server ima preveliku gužvu ili je trenutno nedostupan radi održavanjaili ih tehničkih razloga. Kako u takvoj situaciji ne bi čekali na njegovo "odobrenje" postoji i ova opcija.
Za ovo se koristi aplikacija curl ( pretpostavljam da je dobro poznata archerima među vama ).

Kod: Označi sve

emerge -av net-misc/curl
Nativna fetch naredba biti će zamjenjena sa curlom a mi ćemo je podesiti na niži limit. Slobodno je prilagodite svojoj brzini.

Kod: Označi sve

FETCHCOMMAND="/usr/bin/curl -Y 200000 --connect-timeout 30 -f -L --output \${DISTDIR}/\${FILE} \${URI}"
RESUMECOMMAND="/usr/bin/curl -Y 200000 -C - --connect-timeout 30 -f -L --output \${DISTDIR}/\${FILE} \${URI}"
naravno u make.conf

Kako curl skida i statusne stranice sa servera te ih množi na sustavu, sustav će se eventualno zakrčiti te usporiti. Kako bi to spriječili povremeno sa vremena na vrijeme pokrenite

Kod: Označi sve

eclean-dist -d
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

ODRŽAVANJE DIO3

Prelink

Ovo doduše nije opcija za ubrzanje portagea no opcija je za ubrzanje aplikacija instaliranih iz portagea. Za omogučavanje prvo je trebamo skinuti

Kod: Označi sve

emerge -av sys-devl/prelink
Kako portage 2.0> nativno podržava prelink nije potrebno dalje nišat dodavati.
Sve aplikacije koje ćemo dalje instalirati kompajlirat će se prelinkom dok za one već instalirane je dovoljno pokrenuti

Kod: Označi sve

prelink -amR

Optimizacija kompajlera

Optimizacija kompajlera je vrlo bitna. O kompajleru ovisi koliko dugo će se naš sustav i njegovi paketi graditi. Također softver građen sa optimiziranim kompajlerom će se brže pokretati. No imajte na umu da ovo može i dovesti do nekompatibilnosti sa softverom građenim za drugi tip procesora. Sve o sigurnim Cflags-ovima se nalazi na Gentoo wiki stranicama http://en.gentoo-wiki.com/wiki/Safe_Cflags


Optimizacija procese na višejezgrenim procesorima

Ovo se radi u MAKEOPTS= unutar make.conf datoteke
Stavlja se n+1 gdje je n broj vaših jezgara.
No pripazite da stavite broj fizičkih jezgara je Intel i7 procesori nisu 8 jezgrenu već imaju 4 fizičke jezgre te ih tretirajte takvima kakvi jezu.
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

ODRŽAVANJE DIO4

Ccache

Ccache je c kompajler cache koj ubrzava kompajliranje aplikacija te njihovo rekompajliranje.
Dugo godina u zajednici vlada precjenjivanje njegova korištenja i učinka. Ccache je koristan dodatak i svakako ga se preporuča uključiti no suprotno nekima, neće kompajliranje ubrzati i za do 60% ( realno ubrzanje je do max 10% na 16 jezgrenom Opteronu, na našim desktop mašinama do max 4% ali i to je puno ).

Kako bi koristili ccache otvorite terminal te ga skinite

Kod: Označi sve

emerge -av dev-util/ccache
te ga nakon toga smjestite u FEATURES varijablu u make.conf
te mu odredite direktorij u kojem će raditi te njegovu maksimalnu veličinu

Kod: Označi sve

FEATURES="ccache"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="2G"
Više informacija o ovoj alatki možete naći na službenim wiki stranicama.

SQLite Cache

Korištenje SQLite Cachea može ubrzati izračunavanje ovisnosti paketa te tako ubrzati i portage.
Da bi ovo mogli koristiti trebate ili rebuildati system python sa ovom opcijom ili instalirati pysqlite paket. Preporučam rebuildanje system pythona. Otvorite package.use te dodajet dev-lang/python sqlite te spremite. Nakon toga pokrenite update sa emerghe -avuDN world
jedini paket za update će biti python jer mu je izmjenjen use flag de će ga sa njime i rebuildati.

Za konfiguraciju je potrebno u /etc/portage/modules dodati

Kod: Označi sve

portdbapi.auxdbmodule = cache.sqlite.database

te unutar FEATURES variable u make.conf

Kod: Označi sve

metadata-transfer

Nakon toga možemo obrisati stari cache

Kod: Označi sve

rm -rf /var/cache/edb/dep


te novi regenrirati

Kod: Označi sve

emerge --metadata
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

ODRŽAVANJE DIO5

Portage i python3

Ukoliko koristite ( a sigurno koristite ; ) python3 kao system python tada se preporuča portage kompajlirati sa python3 use flagon te ga svakako i uključite u package.use datoteci.
Python3 pomaže u ubrzanju portagea.

Kod: Označi sve

echo "sys-apps/portage python3" >> /etc/portage/package.use
emerge portage
Sandbox

Sandbox je mehanizam kojeg koristi portage, izvorno kao pomoć kod debugiranja ebuildova.
Primarna funkcija mu je da omogučava sigurno i stabilno okruženje za pokretanje programa čije funkcije nisu dokraja poznate. No također jedna od opcija je da daje okruženje u kojem se mogu odvijati procesi buildanja paketa bez ometanja ostalih procesa sustava. Ukratko, kontrolira proces izrade te ga drži u "kavezu" i ne dopušta mu da "divlja".

Kod: Označi sve

emerge sandbox
te u make.conf unutar FEATURES variable dodamo sandbox



Gentoolkit


Gentoolkit je svakako neizostavan paket skripta za održavanje sustava.
Na repozitoriju se nalaze pod imenom app-portage/gentoolkit pa je potrebno taj paket i povući

Kod: Označi sve

emerge -av gentoolkit
Većina korisniika, posebice oni koji često radi update sustava ili imaju veliku količinu paketa će imati beneficije od ove zgodne arhive.

Više informacija oko gentoolikta te pregled svih skripta potražite na službenim stranicama http://www.gentoo.org/doc/en/gentoolkit.xml
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

Gentoo use flag system

Open source znaći da se kod može a i hoće izmjeniti, niste prisiljeni imati ono što se isporučuje. U suštini, svaki korisnik ima slobodu svaku aplikaciju prilagoditi sebi i svojim potrebama.
No također ukoliko neki library radi svoj posao savršeno, većina developera , ljeni kakvi jesu, neće ići protivno tog librarya niti će ga mjenjati iz koda već će ga koristiti takvim kakav je. Jer radi.
Neki programi za svoj rad zahtjevaju određenu količinu drugih programa i librarya na koje se zatim pozivaju. Neki od njih su potrebni svima, kao glibc. Ako nekoga više zanima o glibc-u evo i koristan link sa mnoštvom informacija http://www.gnu.org/software/libc/libc.html

Suprotno binarnim distribucijama Gentoo GNU/Linux ( and don`t forget the GNU! ) spada u source based distribucije. Što to znaći? To znaći da sav softver instalira iz izvornog koda. Ovakav naćin rada traje duže no zato za uzvrat daje i veću kontrolu i lakšu prilagodljivost.

Jedna od odlika portage package managera su use flagovi.
Kako oni rade i čemu oni služe?

Softver se može kompajlirati na više naćine. Kao što se može i koristiti. Na primjer, audio aplikacije mogu podržavati više formata no možda vam ne trebaju svi ili neke pak ne želite.
Portage vam omogučava da stavite samo ono što želite. Za to se koristi varijabla USE koja kontrolira kako se neki paket instalira. Postoje system wide use flagovi i package specific use flagovi. System wide flagovi se drže u /etc/make.conf i nigdje drugdje dok se package specific flagovi drže u /etc/portage/package.use.

Opis najčešćih use flagova se nalazi u /usr/portage/profiles/use.desc
Use flagovi se postavljaju sa flag za ono što želite i -flag za ono što ne želite, nikako ne +flag.

Primjer:

Popularan file manager midnight commander može se kompajlirati sa i bez podrške za gpm, nls (Native Language Support using gettext), samba, ncurses, X (xfree) te slang ( text display library).

Sa emerge -pv možemo pogledati ponuđene flagove.
Kod ove aplikacije ovo je izlaz

Kod: Označi sve

app-misc/mc-4.8.7  USE="X edit gpm nls slang spell xdg -mclib -samba -sftp {-test}" 2,057 kB

Ukoliko neki od uključenih flagova ne želite dok neki od isključenih želite to promjenite u
package.use datoteci. Na primjer, želimo podršku za sambu i sftp no ne želimo podršku za X.
U package.use stavimo app-misc/mc -X samba sftp te spremimo.
Sljedeći puta kad pokrenete emerge -pv izlaz za ovu aplikaciju će biti promjenjen.

System wide use flags

System wide use flags se nikako ne preporuča izbjegavati. Zašto? Jer oni ubiti određuju vaš sustav.
Na primjer, korisnik a želi sustav sa podrškom za X dok korisnik b ne želi podršku za X.
U make.conf pod variablom USE korisnik a stavlja X dok korisnik b stavlja -X.

Primjeri nekih system vide use variabli

Kod: Označi sve

USE="-32bit -berkdb -fortran -ldap -gnome -mikmod -xulrunner threads pch \ 
 network-cron ithreads xinerama -qt4 mmap -java -gtk lzma zip \ 
           scanner custom-optimization gphoto2 fbsplash sndfile tordns \ 
           fbcondecor fbcon git -handbook subversion sqlite3 glitz gnutls faac faad \ 
           jack openssl ffmpeg theora objc policykit upnp plasma \ 
           libv4l2 geoip wmf inotify v4l2 ieee1394 vcd ntp xcomposite openntpd \ 
           parse-clocks hddtemp lcms smp -nsplugin quicktime lv2 -hal \ 
           xinetd udev avahi -semantic-desktop vpx truetype fontconfig" 

Kod: Označi sve

USE="-* acl alsa attr caps crypt idn mmx nls nptl openmp pam pic sse sse2 sse3 ssse3 ssl unicode xattr xcomposite xinerama xrandr X"

Kod: Označi sve

USE="-hal -kde -gnome 3dnow 3dnowext mmx mmxext sse sse2 sse3 ssse3 \ 
bindist bzip2 cairo caps consolekit cups dbus libnotify lzma md5sum \ 
opengl session startup-notification threads udev unicode X xattr xcb" 

Kod: Označi sve

USE="openal gd vdpau xdg thumbnails nocd 3dnow videos connman ofono roe xine mjpeg ffmpeg mpeg mad aac dts a52 flac theora oggvorbis matroska freetype bidi xv svga stream vlm httpd cdda vdpau vcd cdio live inotify extras nvidia threads hal udev X jpeg xpm fontconfig curl fbcondecor gnutls xvmc mmx sse sse2 mng sql -cups alsa png svg jpeg mp3 mp4 mpeg opengl mysql webkit perl dbus faad gtk X -gnome qt3support -kde dvd alsa cdr java truetype" 
Evo, ovo su system wide use flagovi od 4 različita korisnika i koliko vidimo svi su različiti. Zašto? Jer nemamo svi iste potrebe na računalu i ne koristimo računalo za iste stvari te je svatko od njih personalizirao svoje osobno računalo sebi.


Package specific use flagovi

Također je moguče i svaku aplikaciju personalizirati. To se vrši u prethodno spomenutoj datoteci package.use. Ovu datoteku morate samo kreirati jer ona ne dolazi sa sustavom.
U njoj se nalazi ime aplikacije iz kojeg slijedi popis stvari koje želimo ili pak ne želimo.

Kod: Označi sve

x11-base/xfree -ipv6
app-misc/mc -X gpm
Flagovi u package.use su prioritetno iznad flagova u make.conf no oni vrijede samo za aplikaciju kod koje su uključeni i ne za cijeli sustav.


Pregled ranije korištenih use flagova

Mnogi korisnici ne žele raditi package.use datoteku pa rpilikom instalacije specificiraju flagove koje žele. Takvi flagovi se ne pohranjuju nigdje te im tako prilikom svakog updatea ili rekompajliranja world datoteke predstoji opasnost da će sve aplikacije biti prekompajlirane naspram system wide use flagova.
Na za takve korisnike unitar gentoolkit arhive postoji aplikacija etcat koja izlistava za određen paket ranije korištene use flagove.

Ufed

ufed je kratica za the use flag editor. To je korisna skripta koja islistava dozvoljene use flagove te vam omogučuje njihovo lako editiranje. Ufed obrađuje system wide use flagove te ih sprema u mjesto koje je za njih predviđeno u make.conf.

No iako su use flagovi karakteristika portage paketnog menađera i Gentoo GNU/Linux distribucije, ovakva prilagodba nije Gentoo specifična. Source based distribucije Sourcerer i Source mage inzistriraju na prilagođavanju softvera te je sustav daleko teže izvediv nego kod portaga. Također i Debian podržava vrlo sličnu personalizaciju sa apt-build. Arch Linux u svom abs-u podržava Gentoo use flagove. Također ovakav princip je vrlo čest kod BSD baziranih operacijskih sustava.
No isto tako softver je moguće personalizirati na Slackweru te na bilo kojoj distribuciji gdje se softver instalira iz izvornog koda i to jednostavnim uređivanjem ./configure datoteke u izvornom kodu prije njenog izvršavanja. No kod Gentooa je malko elegantnije izvedeno sa use flagovima te je lakše imati sve na jednom mjestu.

Također abecedni popis use flagova se nalazi na službenim wiki stranicama
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

Gentoo cflags

Što su pak sad cflagovi? Cfflagovi cu C kompajler specifični flagovi. Odnosno to su opcije za optimizaciju GCC-a. Cflagovi kao varijabla su odlika portage paketnog managera no kao opcija kustomizacije su opcija GCC-a te time dostupni svakom operacijskom sustavu koj kao C kompajler koristi GCC: Gdje se oni nalaze? Kod Gentoo GNU/Linux distribucije oni se nalaze unutar make.conf datoteke pod variablom CFLAGS. Služe kako bi specificirali arhitekturu vašeg računala kao i procesor kojeg koristite te posebe opcije kompajlera koje želite uključiti ili pak isključiti.
Ove informacije su od posebnog značaja GNU kolekciji kompajlera iz više razloga.

Govori kako i sa kojim opcijama će se sam kompajler kompajlirati
Govori kompajleru kako personalizirati assembly kod egeneriran od sourca aplikacija

Tehnički, GCC se može kompajlirati i koristiti i bez cflagova. Ionako je to vrlo česta metoda kod binarnih distribucija gdje je ta opcija ostavljena krajnjem korisniku ukoliko je, naravno, on uopće i želi iskoristiti. No to nije misao vodilja iza ove distribucije. Misao vodilja je dati korisniku slobudu i mogučnost da sve aplikacije što je više moguće prilagodi sebi i svojim potrebama, odnosno kustomizacijsko kompajliranje paketa za vaše računalo što skoro uvijek rezultira brzinom izvođenja aplikacija.

Odabir najboljih cflagova za vaš sustav

Osnovna optimizacija

Uz sigurne cflagove postoji nekoliko osnovnih opcija postavke.
Prva od njih je -O ( slovo, ne broj! ). Kako bi vidjeli koje od osnovnh variabli su uključene te sve koje su dostupne konzultirajte GCC manualne stranice.

-O
ova varijabla uključuje neke generalne opcije koje ne utječu na brzinu kompajliranja no zato pripomaže ubrzanju szstav. Nema nekog razloga zašto koristiti -O umjesto -O2 što nas dovodi do

-O2
uključuje sve -O optimizacije te ne utječe na binarnu veličinu paketa kao ni na smetnje prilikom kompajliranja. Ova opcija je ponekad bolja od -O te je i sigurnija. Također ovo je najkorištenija opcija kad se rade binarni paketi kod većine GNU/Linux distribucija

-03
Uključuje sve -O2 optimizacije te ujedno u utjeće na veličinu binarnog paketa te utjeće na brzinu kompajliranja, također otežava debuggiranje. Korištenje ovo opcije može ponekad biti i loša ideja, kasnije ćemo objasniti i zašto.

-Os
optimizacija za veličinu. Uključuje sve -O2 optimizacije te ujedno utjeće na veličinu binarnog. Vrlo je korisna opcija za velike aplikacije poput firefoxa. Utjeće na brzinu podizanja te zauzeća na disku prilikom rada te time doprinosi i na brzini kompajliranja. Od ove opcije prosperiraju korisnici starijih računala dok vlasnici novijeg hardvera nemaju korist od nje. Također ukoliko je želite koristiti imajte na umu da je ova varijabla još uvjek u fazi testiranja te je ni sam GCC developerski team ne preopručuje.



-fromit-frame-pointer

Ova opcija kaže GCC-u da izbjegava fram-pointere ( za korisnike koji neznaju što su frame pointeri http://www.lindevdoc.org/wiki/Frame_pointer ) te tako oslobađa na samom procesoru dodatan registar. Koristi se na x86 arhitekturama dok amd64 ima nativno -O2.
Lutherus

Re: Gentoo Linux

Post Postao/la Lutherus »

Glibc ( GNU c library ) ima use flag glibc-omitfp koj omogučava korištenje ove opcije tamo gdje je sigurna. No kao što je spomenuto, korisnici 64 bitnih procesora od nje neće prosperirati.

-march=<vaša arhitektura>
ova opcija govori GCC-u za koju arhitekturu se optimizara. Nju definitivno želite imati uključenu. Da bi nju uključili jedino što trebate znati je koj je vaš procesor.

-pipe
Zadnja i ujedno najkorištenija opcija je -pipe. Ova opcija govori kompajleru da ne radi temporary fajlove prilikom kompajliranja te da rađe odmah pipa podatke na sljedeću funkciju. Ovako se smanjuje količina smeća kojeg kompajler generira te štedi na diskovnom prostoru i dobiva na brzini. Također morate imati na umu da ova opcija povećava potrošnju rama te ukoliko ga imate malo nemojte je koristiti.

-02 ili -O3?

Mnogi korisnici se dvoume koju od ovih opcija odabrati. Ako imate AMD procesor novije generacije te Intel core i5 ili i7 unazad tri generacije, dvojbe nema, vaša opcija je -03 jer na vašem sustavu -02 nema smisla. No kako većina korisnika ipak nema high end konfiguracije ovo je sasvim legitimna dvojba. Postoji mnoštvo rasprava koja je bolja sa generiranim tablicama i grafovima koji predstavljaju pardnost i mane jedne nad drugom. Također neki korisnici su u stanju kopati oči kad se spomene opcija koju oni ne koriste. No točan odgovor je samo jedan, ona koja odgovara vašem hardveru i vašim potrebama. No zato postoje neke generalne smjernice.

Ako niste iskusan korisnik koristite -02 a eksperimentirati možete uvijek kasnije.
Ukoliko pogonite server tada je jedini izbor -O2.
Ukoliko pogonite sustav koja radi te je namjenjen da radi poput neke radne stanice tada je -O2 jedina opcija.
Ukoliko posjedujete stariji legacy hardver ( pentium, pentim2, pentium3, duron, athlon, k-6, k-7 ) tada ranije spomenuta -Os opcija za vas.
Ukoliko želite Gentoo instalirati na Intel Atom, AMD Neo ili Nvidia Tecra kao i na ARM arhitekturu tada jedino -Os dolazi u obzir.
Puni ste istraživaćkog duha i voljni eksperimentirati? Odlično! -O3 je vaša opcija.
Posjedujete hardver poput četvero jezgrenih i više jezgrenih procesora? Tada je vaša sigurna opcija -O3.

Izbor ukratko:

-O2 je nativna razina optimizacije. Idealan je te se proporuča za desktop sustave radi male veličine binarnog paketa što rezultira bržim podizanjem sa diska te umanjenom potrošnjom rama. Također preporuča se za servere i radne stanice jer je ovo opcija najveće sigurnost i stabilnosti.

-O3 kod uobičajenog hardvera jedino python i sqlite dobivaju na performansama.

-Os opcija se zapravo koristi kod starijih računala, embaded sustava te procesora sa limitiranim cacheom ( Intel Atom, AMD Neo, Via,.. ). Kod modernog hardvera ( čitaj dvojezgreni, četverojezgreni i više jezgreni procesori ) ona nema smila te sustav neće biti ništa brži od -O2 opcije

Cflagovi za developere

Da i to postoji. Čak njh nekolicina namjenjenih developerima.

-Wall
Uključuje sva upozorenja prilikom kompajliranja. Mnogi korisnici se zapravo dvoume koliko je ovo zapravo korisna opcija.

-Wextra
Ispisuje dodatna upozorenja

-Werror
Ova opcija sva upozorenja tretira kao greške te GCC prilikom prve dojave staje sa radom nakon čega korisnik treba ispraviti kod. Greg Kroah-Hartman je poznat da sav svoj kod radi sa ovom opcijom. Također Novell prilikom kompajliranja svog kernela koristi ovu opciju.

-ggdb, -ggdb3
Uključuje što je više moguče debugging informacija.


Što je sa ostalim opcijama?

GNU GCC ima preko stotine opcija kompajlera pa ne bi imalo smisla ih sve nabrajati i opisivati.
Ovdje je pokriven samo najuži dio važnijih opcija dok sve ostale možete saznati pogledom u manualne stranice ili posjeti službene stranice GCC-a. Također na službenim stranicama se nalazi matrica cflagova sa korisničkim komentarima ( korisno ako želite uključiti neku od opcija koje se još uvijek testiraju ili neku od manje poznatih opcija ).

Jednom kad prilagodite kompajler svojome hardveru i izgradite sustav nastojte ne previše kemijati sa njime, cilj svakog korisnika je imati stabilan i upotrebljiv sustav a ne čušpajz.
drvosjeca
Postovi: 30
Pridružen/a: 23 ruj 2013, 23:00
Spol: H
OS: Windows Millenium

Re: Gentoo Linux

Post Postao/la drvosjeca »

Treba rijesiti problem "kompjaliranja gentoo na osobni stroj"

Gentoo se ne kompajlira i ne konfiguira na osobni stroj, to je zabuna koja se ponavlja jos od ukidanja podrske za stage 1 instalaciju, 2005 ili kad vec...
Gentoo se instalira jednako kao i bilo koja binary bleeding edge distra tipa arch. Ako koristite gentoo handbook, instalirat cete ga izuzev kompajlacije kernela i nekoliko aplikacija poput desktopa i sl.

Stage 1 je stage u kojemu se radi bootstrap.sh,. Tu se definiraju sve defaultne konfiguracije i mogucnosti stage-a 3, poput liste profila, defaultnih flagova, ...
Zapravo u stage 1 se radi neki environment iz kojeg cete kasnije konfiguirati i kompajlirati toolchain alate i bazu, takodjer aplikacije u bazi cemo predodrediti u stage 1. (developeri koriste stage 1 za gradnju stage 3)
Nakon toga slijedi stage 2 gdje skidamo source toolchaina i cijele baze te konfiguiramo portage kako ce iskompajlirati sve pojedine pakete te baze i kad ih iskompjalira (ne instalira) zavrsavamo na stage 2 i prelazimo u stage 3.
U stage 3 se prekompajlirana binarna baza i toolchaini instaliraju tj defaulnti binary se ekstraktiraju tamo gdje treba nakon sto ste ih sa kolegom skinuli sa mirrora na prvoj stranici njegovog uputstva.

Sad je mislim tu sve jasno.
Da se cijela prekompajlirana baza samo kopira sa mirora u direktorije za nju i ne kompajlira se niti na osnovu konfiguracija optimizira na nas hardware. To je gentoo stage 3 ili gentoo handbook, koristeci ga 80% vasega gentoo zauvjek ce ostati nekompajlirano, neoptimizirano i nekonfiguirano za vase potrebe.
Neke aplikacije iz baze ce se kasnijim apdejtovima mozda iskompajlati povucen kao deps za apdejtanje necemu sto kompajlirate ali to je jako malo njih.
Da bismo se toga rijesili i 100% kompajlirali nas gentoo, ne treba koristiti stage 1 vec je dovoljno stage 2 jer on je taj stage u kojemu se kompajlira baza.
Pa cemo jednostavno (svejdno ako smo vec gentoo instalirali iz stage 3) prije spavanja lupiti:
"emerge -av -e system"
Koji ce nam izlistati sve usflagove i oko preko 120 aplikacija bas onih koje smo samo kopirali sa mirrora (ovdje necemo use flagovima moci izmjeniti te aplikacije sto jedna vuce drugu, depse, u ovom slucaju istrebljenje depsa se vrsi u stage 1 kao i micanje nekih od tih aplikacija) pa cemo podesiti konfiguracije u /env , /package.use i /make.conf za komapjliranje i optimiziranje te baze, moja preporuka je da se stavi "-bindist" use flag u make.conf i nikakve podrske (+) za nista osim flagova za instrukcije procesora, podrske (+) iskljucivo staviti u /package.use.
I na kraju podesiti globalne flagove kompajlera u /make.conf i lokalne u /env.
Zatim potvrditi upit na output komande koju smo upisali i otici na spavanje.

Ujutro cemo imati potpuno optimiziran i kompajliran gentoo za nas stroj.
Uzivajte u gentanju, totalno drugacija ali odlicna distra. Portage je nesto nevjerojatno, meni osobno najbolji i najmocniji package management
drvosjeca
Postovi: 30
Pridružen/a: 23 ruj 2013, 23:00
Spol: H
OS: Windows Millenium

Re: Gentoo Linux

Post Postao/la drvosjeca »

PORTAGE I OPTIMIZACIJA.

Emerge i ebuild skripte (skripte za automatizaciju svega sto radimo manualno pri kompajliranju aplikacija kad radimo LFS) zajedno cine najmocniji package management u linuxu - Portage.
Portage ne koristi MakeFile datoteke, cak naprotiv bez dodatnih intervencija koristenje istih moze dovesti do problema. Umjesto njih koristi svoje datoteke od kojih su najvaznije /make.conf /package.use i /package.env

/make.conf
Sto se tice optimizacije, u ovoj datoteci se odredju CFLAGS i CXXFLAGS, mogu se editirati i CPPFLAGS, cak i LDFLAGS, ... ali to vec nije preporuceno jer gentoo koristi defaultne LDFLAGS koje su odredili developeri i ako u /make.conf napravimo LDFLAGS liniju i editiramo je, defaultni LDFLAGS ce biti overridani sa novima, barem bi u teoriji tako trebalo biti ali ne znam kako bi to radilo buduci da su LDFLAGS definirani u profiles, pa mislim da bi za specificne LDFLAGS trebalo krenuti iz stage 1, ako je to uopce kome potrebno customizirati.
Uz opcije kompajlera u /make.conf su USEFLAGS koji koriste za optimizaciju, gradnju podrska, i kontrolu dependency-a paketa koje ce portage instalirati, svejedno bili u overlayu ili repozitoriju.
Ta datoteka osim navedenih flagova koristi jos mnoge customizacijske opcije ali za optimizaciju portage su nebitne, barem onu za normalne korisnike.

/package.use
je datoteka za USEFLAGOVE koji ce se koristiti specificno za aplikacije za razliku od /make.conf gdje USE predstavlja flagove koji ce efektirati sve sto podrzavaju u portage (sve aplikacije), za razliku od nje /package.use ce efektirati samo pojedini paket koji odredimo a sve ostale ignorirati tj graditi defaultno prema konfiguraciji iz /make.conf

/package.env
je slicno kao i /package.use vs /make.conf koji se ticu USE flkagova. Ona predstavlja /make.conf vs /package.env ali sto se tice flagova za kompajler. Svrha je ista kao i u /package.use, samo su umjesto USE flagova flagovi za kompajler (CFLAGS,CXXFLAGS,...)
tj. datoteka za odredjivanje specificnih cflagova za aplikaciju koji ce vrijediti samo za tu aplikaciju dok ce ostale biti efektirane cflagovima iz /make.conf

Zasto postoje te dvije lokalne datoteke pored glavne /make.conf ?
Vise je razloga, a najbitniji su dependency jer kad povucemo bilo koji paket sa portage-a on sa sobom vuce depse, upravo zbog ebuild skripta koje automatiziraju postupak aplikacija i svi njeni depsi bit ce kompajlani u isto vrijeme (mislim istom komandom), a mi u vecini slucajeva necemo htjeti da neki deps izgradi podrsku istu kao i aplikacija ili da se kompajlira istim flagovima kompajlera. Zato postoje lokalne datoteke da odredimo u detalje kako ce se sto kompajlirati i kakvu podrsku izgraditi.
To posebno vrijedi za flagove kompajlera, jer svaki je program drugaciji, svaki drugacije koristi instrukcije procesora i memoriju i sigurno da najoptimalnije rijesenje optimizacije nije editirati u /make.conf -O2 i izgraditi cijeli gentoo na toj opciji jer ona ce zaista neke programe optimizirati ali mnoge nece, cak naprotiv neke ce i deoptimizirati.
Greska je velika kad korisnici Gentoo misle da je -O2 najoptimiziranije rijesenje, to je samo najsigurnije rijesenje koje preporucaju developeri. Ne postoji defaultna optimizacija u nicemu, sve sto je defaultno je prije svega sigurno a zatim djelomicno optimizirano, koliko vec moze biti da zadrzi stabilnost.
Da ucinim tekst preglednijim, nastavit cu u sljedeca dva posta od kojih ce jedan biti baziran na optimizaciji USE, a drugi na optimizaciji kompajlerom
drvosjeca
Postovi: 30
Pridružen/a: 23 ruj 2013, 23:00
Spol: H
OS: Windows Millenium

Re: Gentoo Linux

Post Postao/la drvosjeca »

PORTAGE I OPTIMIZACIJA
Optimizacija GCC-om
Lutherus je napisao/la:Gentoo cflags

Što su pak sad cflagovi? Cfflagovi cu C kompajler specifični flagovi. Odnosno to su opcije za optimizaciju GCC-a.
...
Govori kako i sa kojim opcijama će se sam kompajler kompajlirati
Govori kompajleru kako personalizirati assembly kod egeneriran od sourca aplikacija
Ne. To su opcije kojima ce kompajler optimizirati sve sto kompajlira, one nisu samo za optimizaciju samog kompajlera.
Ako kompajliras kompajler, za to ti treba stage 2 u Gentoo, u stage 3 po handbooku se nece GCC kompajlirati do god mu ne izadje neka nova verzija pa se kompajla apdejtom.
Dobro si rekao da te optimizacije mogu rezultirati brzinom izvodjenja aplikacije koju kompajliras. Zato nikad nisam shvatio smisao stage 3...
Osim sto cemo sa stage 2 optimizirati bazu, optimizirati cemo i sam kompajler, pa ce instalacija Gentoo stage 3 trajati krace kosristeci stage 2 jer najvise u instalaciji uzima vrijeme kompajliranja, a ako optimiziramo dobro kompajler u stage 2 to vrijeme ce znacajno pasti.

http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Ovdje mozemo vidjeti sve optimizacijske opcije u GCC, kao i klasicanu kolekciju -O2, -O3, -Os.
Kad hocemo optimizirati neki program, trebamo uzeti u obzir sljedece:
-procesor koji imamo
-sam program
-podrske koje nam (ne)trebaju iz programa
-sustav na kojemu ce program raditi
Uzmimo npr da zelimo optimizirati firefox, krenimo od defaulta, u /make.conf:

slika

Ja koristim -O2 i sa njim ce se optimizirati po defaultu da budu stabilne sve aplikacije u gentoo ali mnoge od njih nece biti u potpunosti optimizirane za moj Gentoo na mom procesoru sa tom opcijom. Jedna od njih je firefox ali ako ovdje u /make.conf odredim optimizaciju prije kompajliranja firefoxa uciniti cu veliku gresku i mozda optimizirati firefox ali deoptimizirati gentoo jer ce se svi depsi koje firefox povuce kompajlirati sa optimizacijom koja mislim da mi je najbolja za sam firefox, a ona sigurno nije dobra za njegove depse.
Zato cu iskoristiti tj napraviti /env direktorij i u njemu dvije datoteke. Jedna ce sadrzavati opcije za optimizaciju firefoxa, a druga ce govoriti portage da kod kompajlacije firefoxa koristi ovu prvu umjesto /make.conf a sve ostale depse da gradi na osnovu /make.conf
Prije nego odlucim kako cu optimizirati firefox, provjerit cu dobro instrukcije i mogucnosti svog procesora te zatim guglati nesto tipa: Firefox development, firefox cflags. Provjeriti MakeFile, uzeti u obzir mogucnosti svog procesora i sam Gentoo i odrediti najoptimalnije rijesenje za komapjlaciju:

slika

Buduci je firefox dosta velik program odlucio sam odabrati -Os koji ce mu smanjiti kod (nebitno koliko imam cache procesora jer program veceg koda ce se duze izvrsavati na istom procesoru od programa manjeg koda). -O2 je isto sto i -Os samo uz dodatak nekih opcija koje optimiziraju ali i uvecavaju kod.
Zato sam odlucio koristiti -Os da zadrzim kod manjim te mu dodati neke opcije iz -O2 (ali ne sve jer stedim na velicini koda) kao foptimize-sibling-calls, te cak i neke opcije iz -O3 kao finline-functions ali i jos neke jace optimizacije od -O3 poput -ffast-math...
Ovo mi nije bio prvi pokusaj, nakon kompajlacije programa testirao sam firefox koristeci beenchmark i ponovo ga rekompajlirao drugim opcijama dok nisam dobio najoptimalnije rezultate...
Takodjer se moze koristiti i -O2 ali bez pojedinih opcija koje ga cine koristeci -fno- umjesto -f... pa sam ovo isto mogao postici na drugaciji nacin (koristeci -O2 ali ignorirajuci optimizacije koje uvecavaju kod) U man gcc je detaljnije objasnjeno sve

Portage je citao datoteku /package.env i znao da treba firefox kompajlati kako je ovdje prikazano dok ce njegove depse kompajlati klasicno sa -O2 kako je odredjeno u /make.conf

slika

jer sam mu u /package.env napisao:
www-client/firefox firefox
Sto znaci: Kompajliraj www-client/firefox na osnovu konfiguracije firefox koja se nalazi u /env direktoriju.

Tako se optimiziraju aplikacije sa GCC u Gentoo i to se ne radi za sve aplikacije jer bi instalacija trajala oko 2 godine (ali bi tako bio maksimalno optimiziran). Uzme se najoptimalnije rijesenje tipa -O2 ili -O3 ovisi o procesoru a zatim se najbitnije aplikacije customiziraju sa kombinacijom flagova iz -Os, -O2, -O3 i svih ostalih negrupiranih, ovisno o potrebama, procesoru, aplikaciji, i samome Gentoo
I na kraju sto je najbitnije ne postoji default, primjer ovog firefoxa je samo za mene i on je optimiziran samo za mene, ni na jednom drugome Gentoo u svijetu pa cak i istog procesora ovo nece biti optimizirano kao sto je kod mene, tako da nije tu da neko prepise i kompajlira vec zato da vidi postupak i nacin i jos bitnije je da bez testa benchmarkom ne mozemo znati kako najbolje optimizirati aplikaciju jer u obzir dolazi toliko faktora koje cak ni najozbiljniji developeri ne mogu pratiti taman se cijeli zivot bavili time.
Zaključano