kernel optimalizálás

Fórumok

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

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.

Esetleg megpróbálhatod lefordítani az icc-vel, az sokszor gyorsabb eredményt produkált, mint a gcc (legalábbis pár éve). :)

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

En a -msse3-at sem eroltetnem kernel eseteben.

---
pontscho / fresh!mindworkz

Az -O2 nem ugyanazt teszi mintha az "optimize for size"-t bekapcsolnám?

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.

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.

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

tenyleg a blog-ba kellet volna, a -msse3 -at vaganykodasnak is fel lehet fogni:P

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