View previous topic :: View next topic |
Author |
Message |
Carnivorous n00b
Joined: 27 Jan 2007 Posts: 38 Location: Warszawa
|
Posted: Sat Jan 27, 2007 5:30 pm Post subject: Flagi gcc dot. wydajności -- make.conf |
|
|
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... |
|
Back to top |
|
|
wodzik l33t
Joined: 12 Jun 2005 Posts: 713 Location: Człuchów
|
Posted: Sat Jan 27, 2007 5:46 pm Post subject: |
|
|
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 |
|
|
Carnivorous n00b
Joined: 27 Jan 2007 Posts: 38 Location: Warszawa
|
Posted: Sat Jan 27, 2007 5:49 pm Post subject: |
|
|
Zwiechy się nie boję bo ten komp to mój poligon doświadczalny. BTW dlaczego odradzasz -O3?? |
|
Back to top |
|
|
wodzik l33t
Joined: 12 Jun 2005 Posts: 713 Location: Człuchów
|
Posted: Sat Jan 27, 2007 5:59 pm Post subject: |
|
|
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 |
|
|
Carnivorous n00b
Joined: 27 Jan 2007 Posts: 38 Location: Warszawa
|
Posted: Sat Jan 27, 2007 6:27 pm Post subject: |
|
|
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 |
|
|
BeteNoire Veteran
Joined: 25 Sep 2005 Posts: 1827
|
Posted: Sat Jan 27, 2007 6:36 pm Post subject: |
|
|
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 |
|
|
n0rbi666 l33t
Joined: 04 Mar 2005 Posts: 707 Location: \Poland\Krakow
|
Posted: Sat Jan 27, 2007 6:42 pm Post subject: |
|
|
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 |
|
|
Riklaunim Apprentice
Joined: 16 Dec 2004 Posts: 286 Location: Poland
|
Posted: Sat Jan 27, 2007 7:54 pm Post subject: |
|
|
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 |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Sat Jan 27, 2007 10:16 pm Post subject: Re: Flagi gcc dot. wydajności -- make.conf |
|
|
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 |
|
|
timor Guru
Joined: 25 May 2005 Posts: 517 Location: Poland
|
Posted: Sat Jan 27, 2007 10:48 pm Post subject: Re: Flagi gcc dot. wydajności -- make.conf |
|
|
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... | 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 |
|
|
Raku Bodhisattva
Joined: 28 Feb 2004 Posts: 2374 Location: Poland
|
Posted: Sat Jan 27, 2007 11:00 pm Post subject: Re: Flagi gcc dot. wydajności -- make.conf |
|
|
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 |
|
|
Yatmai Veteran
Joined: 12 Nov 2005 Posts: 1501 Location: Kraków
|
Posted: Sat Jan 27, 2007 11:37 pm Post subject: |
|
|
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 _________________ 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 |
|
|
timor Guru
Joined: 25 May 2005 Posts: 517 Location: Poland
|
Posted: Sat Jan 27, 2007 11:44 pm Post subject: Re: Flagi gcc dot. wydajności -- make.conf |
|
|
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 |
|
|
koziolek n00b
Joined: 28 Jan 2007 Posts: 25 Location: Warsaw, Poland
|
Posted: Sun Jan 28, 2007 9:17 am Post subject: |
|
|
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 |
|
|
n0rbi666 l33t
Joined: 04 Mar 2005 Posts: 707 Location: \Poland\Krakow
|
Posted: Sun Jan 28, 2007 9:40 am Post subject: |
|
|
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 |
|
|
koziolek n00b
Joined: 28 Jan 2007 Posts: 25 Location: Warsaw, Poland
|
Posted: Sun Jan 28, 2007 10:38 am Post subject: |
|
|
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 |
|
|
nbvcxz Guru
Joined: 02 Sep 2005 Posts: 379 Location: Kraków / PL
|
Posted: Sun Jan 28, 2007 11:26 am Post subject: |
|
|
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 |
|
|
Gabrys Veteran
Joined: 05 Dec 2005 Posts: 1096 Location: Toruń [PL]
|
Posted: Sun Jan 28, 2007 11:47 am Post subject: |
|
|
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 |
|
|
wodzik l33t
Joined: 12 Jun 2005 Posts: 713 Location: Człuchów
|
Posted: Sun Jan 28, 2007 12:18 pm Post subject: |
|
|
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 |
|
|
nbvcxz Guru
Joined: 02 Sep 2005 Posts: 379 Location: Kraków / PL
|
Posted: Sun Jan 28, 2007 12:30 pm Post subject: |
|
|
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 |
|
|
wodzik l33t
Joined: 12 Jun 2005 Posts: 713 Location: Człuchów
|
Posted: Sun Jan 28, 2007 12:33 pm Post subject: |
|
|
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 |
|
|
Gabrys Veteran
Joined: 05 Dec 2005 Posts: 1096 Location: Toruń [PL]
|
Posted: Sun Jan 28, 2007 1:04 pm Post subject: |
|
|
Zapomniałem dodać, że jak ktoś chce jednocześnie zmniejszyć czas kompilacji i szybkość działania, to jedynym wyjściem jest kupienie szybszego kompa . 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 |
|
|
n0rbi666 l33t
Joined: 04 Mar 2005 Posts: 707 Location: \Poland\Krakow
|
Posted: Sun Jan 28, 2007 1:08 pm Post subject: |
|
|
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 |
|
|
Carnivorous n00b
Joined: 27 Jan 2007 Posts: 38 Location: Warszawa
|
Posted: Sun Jan 28, 2007 1:32 pm Post subject: |
|
|
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 |
|
|
Gabrys Veteran
Joined: 05 Dec 2005 Posts: 1096 Location: Toruń [PL]
|
Posted: Sun Jan 28, 2007 1:53 pm Post subject: |
|
|
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 |
|
|
|