még régebben olvastam egy gentoo fórumtopicban, hogy a kernel nem optimalizált, még náluk sem. ahhoz, hogy ez így legyen, a kernel makefile-t át kell írni. én ezt most megtettem:...
HOSTCC = gcc
HOSTCXX = g++
#HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
HOSTCFLAGS = -Wall -Wstrict-prototypes -march=athlon-xp -msse3 -O2 -pipe -fomit-frame-pointer
HOSTCXXFLAGS = -O2
...
a kernel 2.6.22-rc3. leforgattam egy rendest meg egyet a fenti módosítás után. ezután fogtam egy ~800 MB-os wav fájlt, és a két kernelen lefuttattam ezt:
$ time (oggenc -q10 -Q test.wav) 2>res.txt
az eredmények:
opt nélkül:
real 7m4.743s
user 6m53.937s
sys 0m6.558s
opt-tal:
real 7m2.291s
user 6m51.884s
sys 0m5.974s
az egészet X nélkül futtattam + amit tudtam leállítottam (pl. httpd). ha jól számoltam, az egésszel nem nyerünk többet kb. 0,5 %-nál, viszont a gentoo fórumban azt írták, hogy ezzel instabillá válhat a kernelünk, és nem éri meg kínlódni vele. úgy tűnik, igazuk volt (a 2. állítást tekintve legalábbis biztos).
aki azt mondja, írhattam volna blogba, talán igaza van, de ezt nem csak szösszenetnek szánom, akit érdekel, itt kibeszélheti, ha akarja.
szerk: közben kicsit azért átgondoltam :) szóval amit ténylegesen érint (sys), ott az eltérés 9%, ami mondjuk sok kisit processznél lehet hogy használ is valamit. na szóval, mindenki maga vonja le a következtetéseket, lehet, csak én vagyok hülye ;-)
- 1232 megtekintés
Hozzászólások
Kernel legjobban csak az opciok megfelelo valasztassal lehet 'tuningolni' sztem, ilyen -Ox-es dolgokkal vajmi felesleges kinlodni, ahogy azt teis lattad.
- A hozzászóláshoz be kell jelentkezni
Esetleg megpróbálhatod lefordítani az icc-vel, az sokszor gyorsabb eredményt produkált, mint a gcc (legalábbis pár éve). :)
- A hozzászóláshoz be kell jelentkezni
oké de ez athlon :)
- A hozzászóláshoz be kell jelentkezni
szerinted azt a "sok szart ami benne van" letudja az icc forditani? kod tisztasag b) gccizmus ?
akkor mar sunspro val is kilehetne probalni, nem csinaltam bencsmarkokat, de pl egy sima hello world kisebb sunspro val,
masreszt lattam valami SDN videot ahol azt mondtak hogy a sunspro "will" kernelt forgatni
- A hozzászóláshoz be kell jelentkezni
az icc az támogatott compiler, benne van a doksiban is
__________________________________________________________________
Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.
- A hozzászóláshoz be kell jelentkezni
hmm. a c iso szabvány. akkor ha valamelyik fordítóval nem fordul le, akkor a fordító a sz-r, nem?
vagy a kernelben vannak sz-rul megírt kódok?
szerk: hát, ez utóbbi kérdés lehet, hogy csak költőinek menne el? :)
- A hozzászóláshoz be kell jelentkezni
azért szerintem MS C fordítóval érdekesen fordulna le :)
__________________________________________________________________
Nekem mindig igazam van, ha nem, akkor nincs igazam, szoval megint igazam van hogy nincs igazam.
- A hozzászóláshoz be kell jelentkezni
a c iso szabvány
Nem feltetlen. Ez csak az ANSI C-re irt forrasokra igaz. Ahogyan letezik Microsoft ext a Visual C-ben, ugy letezik tobb kilotonna GCC ext is, stb. Termeszetesen az egyik nem ismeri a masikat...
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
ha jól látom, 89 óta ansi szabvány, 90 óta iso
további variálások után utolsó változat 1999/2000-es (iso/ansi), ami még mindig 7 év. szóval azt hiszem időszerű lenne rászokni ;-)
- A hozzászóláshoz be kell jelentkezni
__attribute__
see gcc extensions
egy mezei define -al eltuntetheted az __attribute__ cumokat, ha a forditod nem eszi
#pragma
definico/szabvany szerint fordito specifikus
- A hozzászóláshoz be kell jelentkezni
hazudnék, ha azt mondanám, értem, hogy miről beszélsz =)
- A hozzászóláshoz be kell jelentkezni
azert kivancsi lennek hogy le is forgatja-e :)
- A hozzászóláshoz be kell jelentkezni
En a -msse3-at sem eroltetnem kernel eseteben.
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
Valószínüleg semmi értelme.
Kernel hívásokkor nem mentődik a sok fura (fpu, mmx) regiszter értéke, ezért a kernelnek magának kell gondoskodnia a mentésekről /és visszaállításáról (explicite benne kell lennie a forrás kódban), ha használni akarja.
- A hozzászóláshoz be kell jelentkezni
ahha. majd kiveszem, igazából csak gyors bemásoltam azokat a flageket amikkel progikat forgatok ;-)
- A hozzászóláshoz be kell jelentkezni
Az -O2 nem ugyanazt teszi mintha az "optimize for size"-t bekapcsolnám?
- A hozzászóláshoz be kell jelentkezni
Az -Os .
- A hozzászóláshoz be kell jelentkezni
Tényleg :)
-Os optimizes for size. -Os enables all -O2 optimizations that do not usually increase code size and performs further optimizations designed to reduce code size.
-Os is very useful for large applications, like Firefox, as it will reduce load time, memory usage, cache misses, disk usage etc. Code compiled with -Os can be faster than -O2 or -O3 because of this. It's also recommended for older computers with a low amount of RAM, disk space or cache on the CPU. But beware that -Os is not as well tested as -O2 and might trigger compiler bugs.
- A hozzászóláshoz be kell jelentkezni
regen firefox-ot es amarokot forgattam azzal :)
fogalmam sincs, hogy vegul is kisebb lett-e memoriahasznalat :P
masreszrol pedig igazabol en is mindent forrasbol rakok fel, de 686-ra forditom, mert akkor tudom hasznalni a csomagokat masik gepen is
jah, es genkernel rulz ;)
--
The Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
- A hozzászóláshoz be kell jelentkezni
"jah, es genkernel rulz ;)"
neked gentood is van ? (vagy ez a tul van mashol is?:))
- A hozzászóláshoz be kell jelentkezni
"neked gentood is van?"
ne sertegess :)
"vagy ez a tul van mashol is?"
a tul az tool akart lenni? :)
sysutils/adjustkernel: Generate a NetBSD kernel config
ilyesmire gondoltal?
csinaltam vele ilyen extra stripped kernelt dmesg alapjan, jo kicsi is lett, de nem nagyon lattam ertelmet, ezert visszabootoltam a generic-et
bar egy-ket dolgot bele kellene rakni, es atallitani 686-ra, csak nincs kedvem ujrainditani, mert akkor megint indithatok el mindent az xterm-ekben (amik igazabol mar urxvt-k, nyolc ablak, de kezd keves lenni :) :P
--
The Internet has evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
- A hozzászóláshoz be kell jelentkezni
"de 686-ra forditom, mert akkor tudom hasznalni a csomagokat masik gepen is"
CFLAGS="-march=i686 -O2 -pipe -fomit-frame-pointer -msse" ?
- A hozzászóláshoz be kell jelentkezni
tenyleg a blog-ba kellet volna, a -msse3 -at vaganykodasnak is fel lehet fogni:P
- A hozzászóláshoz be kell jelentkezni
közben végeztem egy kis mérést még, ha már feljött (most a lame-et forgattam kétféleképp):
CFLAGS="-march=i686 -O2 -pipe -fomit-frame-pointer"
lame -V0 --vbr-new test.wav
real 16m56.249s
user 16m7.874s
sys 0m15.219s
CFLAGS="-march=athlon-xp -msse3 -O2 -pipe -fomit-frame-pointer"
lame -V0 --vbr-new test.wav
real 16m52.706s
user 16m4.757s
sys 0m15.240s
1%-on belüli különbség
- A hozzászóláshoz be kell jelentkezni
hasonlítsd 486 hoz.
profilinget nézd meg.
inline -ra vonatkozó dolgokat érdemes lehet megnézni.
-fast-math is erdekelne engem :)
- A hozzászóláshoz be kell jelentkezni
hú :)
majd lehet kipróbálom, de most épp qt4-et forgatok (2-3 óra) :)
- A hozzászóláshoz be kell jelentkezni