Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Flagi gcc dot. wydajności -- make.conf
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish)
View previous topic :: View next topic  
Author Message
Carnivorous
n00b
n00b


Joined: 27 Jan 2007
Posts: 38
Location: Warszawa

PostPosted: Sat Jan 27, 2007 5:30 pm    Post subject: Flagi gcc dot. wydajności -- make.conf Reply with quote

Mam takie pytanie:
Niedawno zainstalowałem Gentoo ze stage3 i zemergowałem serwer X'ów wraz z KDE. Chciałbym jednak przebudować cały system tak aby zdecydowanie zwiększyć wydajność i jeżeli to przy okazji możliwe skrócić czas kompilacji. Jakich flag i ustawień gcc powinienem użyć? Moja maszyna to: Pentium III 560MHz, 256MB SDRAM, Karta graficzna Nvidia Riva TNT2 32MB.
Mój obecny make.conf to:
Code:
# These settings were set by the catalyst build script that automatically built this stage
# Please consult /etc/make.conf.example for a more detailed example
CFLAGS="-O3 -march=pentium3 -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

GENTOO_MIRRORS="http://src.gentoo.pl http://gentoo.prz.rzeszow.pl http://gentoo.zie.pg.gda.pl http://gentoo.po.opole.pl ftp://gentoo.po.opole.pl ftp://mirror.icis.pcz.pl/gentoo/ "

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
VIDEO_CARDS="nvidia"
INPUT_DEVICES="keyboard mouse"
LINGUAS="pl"
CCACHE_SIZE="2G"
USE="-gtk -gnome kde qt dvd alsa cdr java gadu win32codecs"
ACCEPT_KEYWORDS="~x86"


PS. Jeżeli to pytanie jest naiwne/bezsensowne to wynika to z tego że przeniosłem sie z Ubuntu więc moja wiedza jeszcze nie jest zbyt głęboka... :oops:
Back to top
View user's profile Send private message
wodzik
l33t
l33t


Joined: 12 Jun 2005
Posts: 713
Location: Człuchów

PostPosted: Sat Jan 27, 2007 5:46 pm    Post subject: Reply with quote

na takim procku gentoo może ci działać wolniej niż ubuntu. wynika to z tego, ze w ubuntu developer zajmujący się dana aplikacja może kompilować program x razy z różnymi flagami kompilatora i porównywać na jakich działa najlepiej. zreszta liczac na magiczne przyspieszenie sys po odpowiednich flagach gcc możesz się zawieść. ja bym zajął się raczej optymalizacją systemu flagami USE. mniej flag to mniejsze zależności i mniej bibliotek potrzebnych do załadowania podczas uruchamiania programu. a tak na marginesie ja bym zmienił O3 na O2, albo ewentualnie na Os.
_________________
:() { :|: & };: <- nie próbuj wpisywać tego w konsoli
Back to top
View user's profile Send private message
Carnivorous
n00b
n00b


Joined: 27 Jan 2007
Posts: 38
Location: Warszawa

PostPosted: Sat Jan 27, 2007 5:49 pm    Post subject: Reply with quote

Zwiechy się nie boję bo ten komp to mój poligon doświadczalny. BTW dlaczego odradzasz -O3??
Back to top
View user's profile Send private message
wodzik
l33t
l33t


Joined: 12 Jun 2005
Posts: 713
Location: Człuchów

PostPosted: Sat Jan 27, 2007 5:59 pm    Post subject: Reply with quote

O3 działa dla niektórych pakietów, ale dla innych może powodować rozrastanie się kodu i wolniejsze działąnie binarki(czy jakos tak ;). ogólnie raczej się nie poleca.
_________________
:() { :|: & };: <- nie próbuj wpisywać tego w konsoli
Back to top
View user's profile Send private message
Carnivorous
n00b
n00b


Joined: 27 Jan 2007
Posts: 38
Location: Warszawa

PostPosted: Sat Jan 27, 2007 6:27 pm    Post subject: Reply with quote

Czytałem trochę w temacie o gcc 4.3 na temat CFLAGS etc. ale nie za bardzo wiem które flagi do czego są . CZy mógłbyś podać jakieś linki do stron gdzie wytłumaczone jest ich działanie i zastosowanie?
Back to top
View user's profile Send private message
BeteNoire
Veteran
Veteran


Joined: 25 Sep 2005
Posts: 1827

PostPosted: Sat Jan 27, 2007 6:36 pm    Post subject: Reply with quote

Trzymaj się tego co jest ogólnie zalecane. Z tego co widzę O3 potrafi być nawet bardziej niebezpieczne niż Os (którego używam na dwóch swoich kompach). I nie wierz w to, że z syrenki zrobisz jumbo jeta. Tak będzie jechała jak jedzie i nigdy w cudowny sposób nie przyspieszy.
Wszystko o co pytasz jest opisane na gentoo-wiki.
_________________
powered by power plant
Back to top
View user's profile Send private message
n0rbi666
l33t
l33t


Joined: 04 Mar 2005
Posts: 707
Location: \Poland\Krakow

PostPosted: Sat Jan 27, 2007 6:42 pm    Post subject: Reply with quote

głównie : man gcc. Nie ma żadnych benchmarków - bo np -O3 będzie bardzo dobre dla Lame, gzip - a dla kde będzie zabójdze, bo kod będzie za duży, przez co wolniej ładuje się.
A co do flag :
Code:
CFLAGS="-march=pentium3 -O2 -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1"

ew zamiast -O2 możesz spróbować -Os, i polecam np morph-sources na jako kernel :)
Back to top
View user's profile Send private message
Riklaunim
Apprentice
Apprentice


Joined: 16 Dec 2004
Posts: 286
Location: Poland

PostPosted: Sat Jan 27, 2007 7:54 pm    Post subject: Reply with quote

między march ustawionym na i386 a pentium3 nie będzie żadnej różnicy w codziennym używaniu systemu. Nieduże różnice pojawią się w przypadku skomplikowanych operacji obciążających mocno procesor :) Dodanie agresywnych flag zazwyczaj kończy się niestabilnym systemem :)
_________________
Biblioteka CMS i PHP | Biblioteka Linuksa | Biblioteka cRPG | Biblioteka Pythona
Back to top
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Sat Jan 27, 2007 10:16 pm    Post subject: Re: Flagi gcc dot. wydajności -- make.conf Reply with quote

Carnivorous wrote:
Chciałbym jednak przebudować cały system tak aby zdecydowanie zwiększyć wydajność i jeżeli to przy okazji możliwe skrócić czas kompilacji. Jakich flag i ustawień gcc powinienem użyć? Moja maszyna to: Pentium III 560MHz, 256MB SDRAM, Karta graficzna Nvidia Riva TNT2 32MB.

podsumujmy: chcesz dzięki odpowiedniemu ustawieniu flag kompilatora zrobić z procesora P3 Pentium Core Duo lub przynajmniej P4? Proponuję wrócić na ziemię...
_________________
raku

Powered by Archlinux ;-)
Back to top
View user's profile Send private message
timor
Guru
Guru


Joined: 25 May 2005
Posts: 517
Location: Poland

PostPosted: Sat Jan 27, 2007 10:48 pm    Post subject: Re: Flagi gcc dot. wydajności -- make.conf Reply with quote

Carnivorous wrote:
...aby zdecydowanie zwiększyć wydajność i jeżeli to przy okazji możliwe skrócić czas kompilacji....
PS. Jeżeli to pytanie jest naiwne/bezsensowne to wynika to z tego że przeniosłem sie z Ubuntu więc moja wiedza jeszcze nie jest zbyt głęboka... :oops:
Naprawde świetny kawałek tekstu :) Zerknij tu. Ten kawałek choć nieco podstarzały to klasyk gatunku ;) Jeśli po jego przeczytaniu nadal będziesz miał ochotę się bawić to daj znać o efektach.
Back to top
View user's profile Send private message
Raku
Bodhisattva
Bodhisattva


Joined: 28 Feb 2004
Posts: 2374
Location: Poland

PostPosted: Sat Jan 27, 2007 11:00 pm    Post subject: Re: Flagi gcc dot. wydajności -- make.conf Reply with quote

timor wrote:
Naprawde świetny kawałek tekstu :) Zerknij tu. Ten kawałek choć nieco podstarzały to klasyk gatunku ;) Jeśli po jego przeczytaniu nadal będziesz miał ochotę się bawić to daj znać o efektach.

jedyna mądra wypowiedź z tego wątku dotycząca ustawień kompilatora jest tutaj (autor: ebfe).
_________________
raku

Powered by Archlinux ;-)
Back to top
View user's profile Send private message
Yatmai
Veteran
Veteran


Joined: 12 Nov 2005
Posts: 1501
Location: Kraków

PostPosted: Sat Jan 27, 2007 11:37 pm    Post subject: Reply with quote

Ja dodam swoje 3 grosze, CFLAGS mogą dać Ci niewielki "zysk" szybkości w stosunku do dobrze ułożonych USE :) Generalnie Gentoo (z KDE ofkoz) śmiga mi sporo lepiej na PII 400Mhz niż koleżance Debian na 830Mhz a to już jest coś :)

....taki bonus za to, że chciało się poświęcić chwilkę na kompilację Gentoo :D
_________________
Desktop: [Ath64 X2 2GB DDR2 GF76GT] [amd64] [2.6.29-gentoo] [nVidia] [KDE 3.5.10]
Lapek: [HP nc6000] [i686] [2.6.29-ARCH] [ati-open] [KDE 3.5.10]
Back to top
View user's profile Send private message
timor
Guru
Guru


Joined: 25 May 2005
Posts: 517
Location: Poland

PostPosted: Sat Jan 27, 2007 11:44 pm    Post subject: Re: Flagi gcc dot. wydajności -- make.conf Reply with quote

Raku wrote:
jedyna mądra wypowiedź z tego wątku dotycząca ustawień kompilatora jest tutaj (autor: ebfe).
Mogłeś chociaż zaczekać, aż przeczyta... ;D Po dwóch dniach kombinowania poznałby na własnej skórze o co chodzi ;)
Back to top
View user's profile Send private message
koziolek
n00b
n00b


Joined: 28 Jan 2007
Posts: 25
Location: Warsaw, Poland

PostPosted: Sun Jan 28, 2007 9:17 am    Post subject: Reply with quote

Carnivorous wrote:
dlaczego odradzasz -O3??

W przypadku niektórych aplikacji z góry zakładane jest jej działanie tylko do -O2 - O3 nie jest wspierane. Przykładem jest Gnome i GTK. Niektóre ebuild-y same zastępują O3 niższą wartością, np. GTK+ (replace-flags -O3 -O2), bo w przeciwnym razie to po prostu nie działa.

Dodatkowo -O3 z racji włączenia -finline-functions może produkować większy (objętościowo) kod, co niekoniecznie daje dobre rezultaty.

No i oczywiście z przymrużeniem oka:
http://funroll-loops.org/
:)

BTW. W powyższych niektórych propozycjach brakuje -mfpmath=sse (o ile procesor wspiera sse - cat /proc/cpuinfo).
Back to top
View user's profile Send private message
n0rbi666
l33t
l33t


Joined: 04 Mar 2005
Posts: 707
Location: \Poland\Krakow

PostPosted: Sun Jan 28, 2007 9:40 am    Post subject: Reply with quote

koziolek wrote:
BTW. W powyższych niektórych propozycjach brakuje -mfpmath=sse (o ile procesor wspiera sse - cat /proc/cpuinfo).
Nie nie nie - mfpmath=sse warto włączać dopiero na procesorach z obsługą sse3, poniżej (czyli np pentium3, athlon-xp) - nie warto, to wręcz spowalnia kod.
Back to top
View user's profile Send private message
koziolek
n00b
n00b


Joined: 28 Jan 2007
Posts: 25
Location: Warsaw, Poland

PostPosted: Sun Jan 28, 2007 10:38 am    Post subject: Reply with quote

n0rbi666 wrote:
Nie nie nie - mfpmath=sse warto włączać dopiero na procesorach z obsługą sse3, poniżej (czyli np pentium3, athlon-xp) - nie warto, to wręcz spowalnia kod.

Troszkę mnie zaskoczyłeś - bo jednostki SSE nawet te nietaktowane z pełnym zegarem co procesor, są generalnie lepszym rozwiązaniem niż 387... Niemniej na Pentium M (1,86 GHz, 2048 kB cache, SSE, SSE2) wydaje się potwierdzać Twoją teorię krótki benchmark:
http://wklej.org/id/982e543e1b
(zysk: około 6,5%; powtarzalny zysk)

O dziwo w drugim przypadku kompilacja wyglądała:
Quote:
i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../source/base -I../source/frontend -I../unix -I../libraries/png -pipe -Wno-multichar -O3 -msse -mfpmath=sse -msse2 -march=pentium-m -mtune=pentium-m -malign-double -minline-all-stringops -O3 -march=pentium-m -pipe -mfpmath=387 -c -o userio.o `test -f 'userio.cpp' || echo './'`userio.cpp

:)

Tak czy inaczej - czy mógłbyś to (lepiej mfpmath=387 niż sse) szerzej opisać? Teoretyczne rozważania? Propozycje testów wydajnościowych, które mógłbym wykonać? Doświadczenia?


Rakieta dla povray wzięta z:
http://www.f-lohmueller.de/pov_tut/objects/obj_810e.htm
Back to top
View user's profile Send private message
nbvcxz
Guru
Guru


Joined: 02 Sep 2005
Posts: 379
Location: Kraków / PL

PostPosted: Sun Jan 28, 2007 11:26 am    Post subject: Reply with quote

Nie zgodzę się, że:
Code:
CFLAGS="-march=pentium3 -O2 -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1"

to najlepsze co można ustawić. Ale zgoda - przesada może zrobić więcej złego iż dobrego.
Dla mnie pytanie Carnivorous dotyczny raczej konfiguracji gentoo w celu najwyższej wydajności. Proponuję zapoznanie się z:
https://forums.gentoo.org/viewtopic-t-509252.html
https://forums.gentoo.org/viewtopic-t-509783.html
_________________
nBVCXz
zen-kernel (bfq compcache) | /tmp -> tmpfs | ext4 | zsh | xfce | schedtool
Back to top
View user's profile Send private message
Gabrys
Veteran
Veteran


Joined: 05 Dec 2005
Posts: 1096
Location: Toruń [PL]

PostPosted: Sun Jan 28, 2007 11:47 am    Post subject: Reply with quote

Ja tam bym pozostał przy tych flagach, co masz.

Miałem kiedyś -O3 bez żadnych problemów (pewnie przez to, że jeśli wiadomo, że coś się nie kompiluje z -O3, to jest zamieniane na -O2).

Teraz mam:

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
ACCEPT_KEYWORDS="x86"
MAKEOPTS="-j1"

I teraz może po kolei:

dlaczego -O2 "zamiast" -O3? Czas kompilacji w przybliżeniu ze dwa razy dłuższy dla -O3, a wzrost wydajności niemal niezauważalny (no może, w niektórych sytuacjach).

dlaczego x86, a nie ~x86, bo nie lubię jak coś nie działa. Jak chcę mieć nowszą wersję niż oznaczona jako stable, to sobie dodaję wpisy do /etc/portage/package.keywords/ ale reszta systemu jest stabilna jak khm...

dlaczego -j1 a nie -j2: -j2 powoduje, w skrócie mówiąc kompilowanie dwóch kawałków kodu jednocześnie. Czyli mamy wzrost wydajności, bo w czasie wykonywania np. operacji dyskowych w jednym procesie, drugi proces może pożerać sobie procesor na swoje obliczenia, ALE: dwa procesy to dwa (~) razy więcej zżeranej pamięci. Konsekwencje tego są dwojakie: 1. zamulenie kompa, gdy akurat coś usiłujesz robić, czyli trochę brakuje pamięci. 2. Niektóre kompilacje zżerają np. 200-300 MB pamięci. Ta liczba razy dwa, przekracza dostępną fizyczną pamięć, następuje swapowanie, co (zamiast przyśpieszać) spowalnia kompilacje.

Podsumowując: jak kompilujesz sporo, powiedzmy na noc, to można sobie ustawić -j2, ale generalnie na desktop Gabrys poleca -j1.

To chyba tyle. Jak jest jasne i ogólnie znane, że jakiś program dostaje mocnego kopa z konkretnymi flagami (jest kilka), to można go specjalnie skompilować z ustawionymi specjalnie dla niego flagami.

Czas zabawy z flagami zawsze będzie większy niż czas, który uzyskasz na szybszym działaniu komputera.

I jeszcze mała uwaga dotycząca -Os. Wydaje mi się, że nie powinno się zbytnio stosować tej optymalizacji. Sprawdziłbym to na Twoim miejscu.
_________________
Sabayon Professional 1.1 (czyli zdradziłem oryginalne Gentoo)
@ Dell Inspiron 8600 (nVidia, Realtek, Pentium M)
Back to top
View user's profile Send private message
wodzik
l33t
l33t


Joined: 12 Jun 2005
Posts: 713
Location: Człuchów

PostPosted: Sun Jan 28, 2007 12:18 pm    Post subject: Reply with quote

jeszcze dodam tak propo tego -j1 czy -j2. jest pare pakietoww, ktore ni ciula sie nie kompiluja z j2. np taki wine. niedawno jeszcze jeden pakiet ktory kompilowalem tak mial (nie pamietam co to bylo, wiec raczej jakas pierdola), wiec ustawilem j1 i tak zostalo. nie zauwazyłem jakiegos strasznego spowolnienia kompilacji.
_________________
:() { :|: & };: <- nie próbuj wpisywać tego w konsoli
Back to top
View user's profile Send private message
nbvcxz
Guru
Guru


Joined: 02 Sep 2005
Posts: 379
Location: Kraków / PL

PostPosted: Sun Jan 28, 2007 12:30 pm    Post subject: Reply with quote

wodzik wrote:
jeszcze dodam tak propo tego -j1 czy -j2. jest pare pakietoww, ktore ni ciula sie nie kompiluja z j2. np taki wine. niedawno jeszcze jeden pakiet ktory kompilowalem tak mial ...

ależ oczywiście że wine compiluje się -j2 ; u mnie kompilacja wine zajmowała bardzo dużo miejsca na /var/tmp i wszyskie ewentualne wywrotki brały się z powodu przepełnienia tej patycji podczas kompilacji (teraz mam na /var ok5GB i starcza) ale nigdy nie wymagały -j1
_________________
nBVCXz
zen-kernel (bfq compcache) | /tmp -> tmpfs | ext4 | zsh | xfce | schedtool
Back to top
View user's profile Send private message
wodzik
l33t
l33t


Joined: 12 Jun 2005
Posts: 713
Location: Człuchów

PostPosted: Sun Jan 28, 2007 12:33 pm    Post subject: Reply with quote

u mnie niestety za malo ramu, albo wolnego miejsca na partycji. przy j1 sie nie rozrasta az tak. i moge kompilowac pracujac normalnie na kompie.
_________________
:() { :|: & };: <- nie próbuj wpisywać tego w konsoli
Back to top
View user's profile Send private message
Gabrys
Veteran
Veteran


Joined: 05 Dec 2005
Posts: 1096
Location: Toruń [PL]

PostPosted: Sun Jan 28, 2007 1:04 pm    Post subject: Reply with quote

Zapomniałem dodać, że jak ktoś chce jednocześnie zmniejszyć czas kompilacji i szybkość działania, to jedynym wyjściem jest kupienie szybszego kompa :D. Każda dodatkowa optymalizacja, która potencjalnie (!) zwiększa wydajność kodu, powoduje wydłużenie czasu kompilacji.
_________________
Sabayon Professional 1.1 (czyli zdradziłem oryginalne Gentoo)
@ Dell Inspiron 8600 (nVidia, Realtek, Pentium M)
Back to top
View user's profile Send private message
n0rbi666
l33t
l33t


Joined: 04 Mar 2005
Posts: 707
Location: \Poland\Krakow

PostPosted: Sun Jan 28, 2007 1:08 pm    Post subject: Reply with quote

koziolek wrote:
Tak czy inaczej - czy mógłbyś to (lepiej mfpmath=387 niż sse) szerzej opisać? Teoretyczne rozważania? Propozycje testów wydajnościowych, które mógłbym wykonać? Doświadczenia?

Propozycje testów :
Nbench ( http://www.tux.org/~mayer/linux/bmark.html ) - ale to dość dziwny benchmark
Najlepiej np skompilować lame z różnymi flagami, zrobić plik ~100 mega (dd if=/dev/urandom of=/home/n0rbi bs=1M count=128) - i kompresować go lame porównując uzyskane czasy.

Kumpel jest w trakcie pisania skryptu, który robi to automatycznie dla różnych flag - na razie uzyskał takie wyniki :
http://rydek1.w.interia.pl/out.txt (literówka tam jest - zamiast czas kompresji powinno być czas kompilacji
pierwszy wynik to czas kompresji pliku, drugi - wielkośc uzyskanej binarki, trzeci - czas kompilacji)

Można jeszcze użyć w tym celu gzip, bzip2, p7zip, transcode - generalnie wszystkiego, co wymaga dużej liczby obliczeń zmiennoprzecinkowych :)
Back to top
View user's profile Send private message
Carnivorous
n00b
n00b


Joined: 27 Jan 2007
Posts: 38
Location: Warszawa

PostPosted: Sun Jan 28, 2007 1:32 pm    Post subject: Reply with quote

Wielki dzieki za pomoc. A propos nowego kompa to pewnie nie wczesniej niz latem cokolwiek pomysle bo z kasa krucho. BTW nie chodzilo mi o zrobienie z pIII 500MHz Core 2 Duo, tylko ogolnie co sie zaleca. Na Gentoo przenioslem sie ze wzgledu na portage i ogolnie zeby poznac system "nie dla blondynek (bez urazy dla blondynek)". A tak swoja droga to czy komus dziala expat 2.0? bo mi caly czas wywala blad libexpat.so.0 a nie chce mi sie zbytnio revdep-rebuildowac bo znajduje prawie 100 pakietow do przebudowy.
Back to top
View user's profile Send private message
Gabrys
Veteran
Veteran


Joined: 05 Dec 2005
Posts: 1096
Location: Toruń [PL]

PostPosted: Sun Jan 28, 2007 1:53 pm    Post subject: Reply with quote

Carnivorous wrote:
A tak swoja droga to czy komus dziala expat 2.0? bo mi caly czas wywala blad libexpat.so.0 a nie chce mi sie zbytnio revdep-rebuildowac bo znajduje prawie 100 pakietow do przebudowy.


I to rozwiązuje sprawę, zostaw sobie na noc.
_________________
Sabayon Professional 1.1 (czyli zdradziłem oryginalne Gentoo)
@ Dell Inspiron 8600 (nVidia, Realtek, Pentium M)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum