Citat:
Boe: nemojte ljudi puno polemike.
Zašto, Boe?
Većina ljudi koja je direktno odgovorila na njegovo pitanje se slaže sa tobom, da treba ići sa 32-bitnom verzijom, jer je početnik. Slažem se i ja.
Ali, ta priča je poodavno završena (otac_xxl se ne javlja sa potpitanjima ;) ), pa mi možemo da drvimo na temu 64 bita sproću 32 bita, je l'?
Ja poodavno vozim 64-bitni Gentoo, i nije mi baš jasno o kakvim "problemima" dmc priča. Sve se prevodi, odavno već, sem dobro poznatih i dokumentovanih izuzetaka koji se na 64-bitnom Linux-u voze kao 32-bitne aplikacije, a u emulaciji:
- Najznačajniji paket koji još nije zdravo pokušati da se prevodi (sem ako nijeste developer i voljni da im pomognete da srede paket) je Open Office. Obećali su da će slijedeća verzija moć da se kompajlira na 64-bitnom sistemu.
- Flash za linux je, nažalost, zatvoreni kod koji postoji samo u 32-bitnoj verziji. Konqueror (browser na KDE) je u Debian-u sređen da može da vozi 32-bitni plugin (da ne bude zabune, SAMO plugin je 32-bitni jer drugi ni nema, Konq je preveden kao 64-bitna aplikacija), a ko neće da se aka sa time, firefox preveden za 32 bitni procesor i sav folklor koji uz to ide.
- Codec-i su 32-bitni, zato što je to Windows kod i što ne postoje 64-bitne verzije (da, Windows XP 64 bitna verzija je tek nekonformno okruženje, naročito što se drajvera tiče). Svi multimedijalni plejeri kojima trebaju windows codec-i (tu ne spada ono što ffmpeg može da odradi, a može dosta, ja uopšte ne trošim windows codec-e) se, za sad, voze kao 32-bitne aplikacije.
Brzina 64-bitnog sistema? Heh...
Ovaj ovdje je preživio veliku migraciju sa 16-bitnih mašina na 32-bitne. E, za razliku od onog što se onda dešavalo (nije bilo nikakve diskusije, 32 bita je bila toliko superiorna arhitektura), danas to nije baš tako jednostavno. Više razloga za to.
Prvo, treba se čuvati od poređenja žaba i baba(h). Tjerati amd64 u 32-bitnom modu NIJE isto što porediti izvršavanje koda na 32-bitnom procesoru ("stari" Athlon XP ili 32-bitni Pentium 4) sa izvršavanjem istog koda na 64-bitnom procesoru, a u emulaciji 32-bitne mašine. AMD64 je STRAHOVITO dobra platforma za emulaciju 32-bitnog okruženja, činjenica da je Intel dobio po ćuši i da mu je tako pala prodaja (52% profit dolje, year-over-year, ako se dobro sjećam najnovijih rezultata), u situaciji kad više od 90% ljudi još uvijek vozi 32-bitni (Windows) softver, stavlja tu diskusiju ad acta. Što se pristupa memoriji tiče (a to je usko grlo svih modernih procesora, sve mašine su "žedne" memorije) amd64 u 32 bitnom modu to radi skoro isto tako dobro kao kad se isti procesor tjera u 64 bitnom modu. Memorijski kontroler integrisan na samom procesoru je jedan te isti, širina magistrale je jedna te ista...
Drugo, da za trenutak odlutam u performanse 32-bitnih Linux mašina, vječita tema na mojoj distribuciji i svojevsna potraga za (tako neuhvatljivom) Nirvanom. Elem, optimizacija koda, tojest tanano podešavanje GCC parametara da se dobije kod koji najbrže "trči" na mašini je poprilično kompleksan posao. Broj parametara koje mogu da se poture GCC-u (man gcc), a koji na ovaj ili onaj način spadaju u "optimizaciju" je popriličan, broj kombinacija (bez ponavljanja ;)) tih parametara je već ogrman broj. Toliko veliki, da su definisani generički "nivoi" (-On, n=s,1,2...) koji nijesu ništa drugo nego kombinacije drugih parametara.
Svaki nadobudni Gentoo ricer vozi (bar) -O3 kao generički nivo gcc optimizacije. -O3, veoma generalizovano i uprošćeno, je klasičan primjer "optimizacije po performansama", gdje se ne gleda koliko je rezultujući kod velik, već da se što brže izvršava. Izgleda malo kontradiktorno (brži a više koda?), ali ima smisla, ko razmišlja kako, neka iskopa na Mreži nešto na temu "loop unrolling" kao tehnike za optimizaciju i biće mnogo jasnije.
E, onda se jednog lijepog dana pojavila družina koja je prevela cio sistem sa -Os, što je, opet veoma grubo rečeno, drugi ekstrem, "optimizacija po veličini koda". Tu se insistira da se dobije što MANJI kod.
Sad, i jedno i drugo je optimizovano, ali se postavlja pitanje na osnovu čega je ta družina tvrdila da je sistem preveden sa -Os brži, kad bi baš -O3, bar na papiru, trebao da nosi tu "krunu". Pa, "brzina izvršavanja" jednog paketa, a na na živom sistemu, je zbir vremena potrebnog da se paket učita u memoriju, pa da se onda izvrši. I što je bolje? Zavisi. Ako je vrijeme koje se program zadržava u memoriji kratko (uradi i brzo završi), -Os ispada bolja optimizacija, jer je vrijeme punjenja paketa u memoriju kraće. Ako se radi o aplikaciji koja "krcka brojeve" i dugo radi, e onda je -O3 definitivno bolje riješenje, jer je vrijeme punjenja u memoriju mnogo manje od vremena koje se troši na izvršavanje koda.
E sad, kakve ovo veze ima sa 64-bitnim kodom? Pa ima, ove razlike su poprilično dobra analogija (ali još uvijek gruba aproksimacija) razlika između 32-bitnog i 64-bitnog Linuxa. Ako na 32-bitni kod gledate kao na nešto što je "optimizovano po veličini", a 64-bitni kod kao nešto što je "optimizovano po performansama", dobije se dobra "šac-metoda" da se predvidi gdje će se pokazati razlike.
Elem, ko vozi računarski intenzivne aplikacije kao što je, na primjer, konverzija videa, itekako će osjetiti brzinu 64-bitnog sistema. U običnom radu, ta razlika nije tako opipljiva.