# Potrzebna pomoc we własciwym doborze flag i ustawień

## Marvell

Witam

Uzywam gentoo od niedawna. Niby wszystko (prawie) chodzi poprawnie, ale nie jestem do końca zadowolony z szybkości. W innym temacie wyczytałem, że moze to być wina żle dobranych flag i ustawień w make.conf

Zwracam się więc do Was z prośbą o pomoc w ich własciwym ustawieniu.

emerge --info:

```
emerge --info

Portage 2.1.8.3 (default/linux/x86/10.0, gcc-4.4.3, glibc-2.11-r1, 2.6.33-gentoo i686)

=================================================================

System uname: Linux-2.6.33-gentoo-i686-AMD_Sempron-tm-_Processor_3200+-with-gentoo-2.0.1

Timestamp of tree: Mon, 19 Apr 2010 13:45:02 +0000

ccache version 2.4 [disabled]

app-shells/bash:     4.1_p5

dev-java/java-config: 2.1.10

dev-lang/python:     2.6.5-r1, 3.1.2-r2

dev-util/ccache:     2.4-r8

dev-util/cmake:      2.8.1-r1

sys-apps/baselayout: 2.0.1

sys-apps/openrc:     0.6.1-r1

sys-apps/sandbox:    2.2

sys-devel/autoconf:  2.13, 2.65

sys-devel/automake:  1.9.6-r3, 1.10.3, 1.11.1

sys-devel/binutils:  2.20.1

sys-devel/gcc:       4.4.3

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.6b

virtual/os-headers:  2.6.33

ACCEPT_KEYWORDS="x86 ~x86"

ACCEPT_LICENSE="* -@EULA"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=i686 -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-O2 -march=i686 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LANG="pl_PL.UTF-8"

LDFLAGS="-Wl,-O1"

LINGUAS="pl en"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="X aac acl alsa apm avahi avi berkdb bitmap-fonts branding bzip2 cdr cli consolekit cracklib crypt cups cxx dbus device-mapper dri dvd extras fbcondecor flac fortran gdbm gnome gpm gtk hal iconv ipv6 java jpeg mad modules mp3 mpeg mudflap ncurses nls nptl nptlonly nvidia opengl openmp pam pcre perl png policykit pppd python qt qt3support readline reflection scanner session spl ssl sysfs tcpd threads truetype unicode usb vorbis x86 xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="pl en" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia" 

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

emerge -evp world:

http://wklej.org/id/319939

Korzystam z wesji ~x86. Używam fluxboksa i GNOME. Nie zamierzam używać kde. Mam jednordzeniowy procesor, koszystam zawsze z jednego monitora.

Co powinienem zmienić/dodać/usunąć?

 :Smile: 

----------

## ryba84

Jeśli nie kożystasz z KDE to ustaw w USE w /etc/make.conf:

```
USE="-kde -qt3 -qt4"
```

Wyłączysz wsparcie dla kde globalnie. Dla pojedyńczych pakietów włączaj je w /etc/portage/package.use.

Dokładny opis do czego służą flagi USE znajdziesz w /usr/portage/profiles/use.desc. Zmień też to march=i686 na odpowiednią wartość pod Twój procesor. No i pewnie kernel skompilowałeś też pod pentium-pro (i686). Wklej na jakiegoś pastebina konfig jajka.

----------

## Marvell

Dzięki za odpowiedź

http://wklej.org/id/320204/ config jajka. Kompilowałem je pod swój procesor, nie pod pentium pro.

march=i686  mam zmienić na wartość pod mój procesor, tzn jaką?

```
cat /proc/cpuinfo

processor   : 0

vendor_id   : AuthenticAMD

cpu family   : 15

model      : 79

model name   : AMD Sempron(tm) Processor 3200+

stepping   : 2

cpu MHz      : 1808.937

cache size   : 128 KB

fdiv_bug   : no

hlt_bug      : no

f00f_bug   : no

coma_bug   : no

fpu      : yes

fpu_exception   : yes

cpuid level   : 1

wp      : yes

flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow extd_apicid pni cx16 lahf_lm extapic cr8_legacy

bogomips   : 3617.87

clflush size   : 64

cache_alignment   : 64

address sizes   : 40 bits physical, 48 bits virtual

power management: ts fid vid ttp tm stc

```

 *ryba84 wrote:*   

> Jeśli nie kożystasz z KDE to ustaw w USE w /etc/make.conf:
> 
> ```
> USE="-kde -qt3 -qt4"
> ```
> ...

  Tak, ale czy wtedy będą mi działa programy takie jak np kadu? Tzn że po prostu dla każdego pakietu który potrzebuje qt3 czy qt4 mam je właczać tylko dla niego?

----------

## ryba84

 *Marvell wrote:*   

> 
> 
>  *ryba84 wrote:*   Jeśli nie kożystasz z KDE to ustaw w USE w /etc/make.conf:
> 
> ```
> ...

 

Generalnie tak możesz robić dla aplikacji w których chcesz/musisz mieć wsparcie dla kde.Ja zamiast kadu kożystam pod gnomem z pidgina  :Wink: 

Co do march to z tego co znalazłem w necie to powinno być athlon-xp, ale nie jestem pewien.

Kernel:

Zmień w gałęzi enable the block layer io-scheduler na cfq. W gałęzi procesor type and fatures wyłącz smp bo to chyba procesor jednordzeniowy, Zmień preemtion model na low latency desktop. Zmień timer frequency na 1000Hz. Wywal sterowniki których nie potrzebujesz, no i z tego co widzę to procek AMD to po zo Ci rzeczy odpowiedzialne za intela. I co najważniejsze w menuconfig masz coś takiego jak help po wybraniu danej opcji wybież help to dowiesz sie do czego to służy.

Edit.

Zajrzyj tu i poczytaj o optymalizacji kernela.

http://forum.idg.pl/linux-kernel-tipstricks-zacheta-zabawy-t167399.html

----------

## lsdudi

Dodaj do flag

USE="mmx mmxext 3dnow 3dnowext sse sse2"

z tym timer frequency na 1000Hz to lekka przesada, mozesz mieć problemy z tym, polecam 250Hz 

Poprawka 300Hz

----------

## ryba84

 *lsdudi wrote:*   

> Dodaj do flag
> 
> USE="mmx mmxext 3dnow 3dnowext sse sse2"
> 
> z tym timer frequency na 1000Hz to lekka przesada, mozesz mieć problemy z tym, polecam 250Hz

 

Jeśli to ma być desktop to nie widzę powodu by nie dać 1000Hz. U mnie działa tak kilka lat i nie było nigdy żadnego problemu. No chyba, że to laptop to lepiej mniej bo inaczej żre baterię aż miło.

----------

## lsdudi

 *ryba84 wrote:*   

> 
> 
> Jeśli to ma być desktop to nie widzę powodu by nie dać 1000Hz. U mnie działa tak kilka lat i nie było nigdy żadnego problemu.

 

moze być problem (np z wirtualizacja i jakością multimediów)

to jest tylko element moznika 

1000Hz*number_of_cpu * cpu_speed in Hz

okresla to ile następuje zmian kontekstu w czasie 1s a posiadanie zbyt wysokich warości wcale nie jest zbyt dobre

----------

## ryba84

Zrobię małego offtopa. Poszukałem w google o problemach z timerem na 1000Hz i rzeczywiście mogą być problemy z audio jeśli użyte są kiepskiej jakości elementy. U mnie to nie występuje.

Czy jeśli zmniejsze timer frequency to mogę się spodziewać poprawy w działaniu maszyny wirtualnej? Procek jednordzeniowy.

----------

## Marvell

No ok, poprawiłem trochę config jajka i własnie się kompiluje

a co do march= to wydaje mi się ze dla mojego procka powinno być march=k8. Dobrze myślę?

Mam ustawione -kde, dodałem jeszcze -qt3 i -qt4

 *Quote:*   

> USE="mmx mmxext 3dnow 3dnowext sse sse2"

  w czym pomogą mi te flagi?

```
CFLAGS="-O2 -march=i686 -pipe"
```

Tak miałem ustawione wczesniej. Czy wystarczy tylko zamienić i686 na wartość dla mnie? czy powinienem dodać jeszcze jakies parametry?

 :Smile: 

----------

## lsdudi

 *Marvell wrote:*   

> 
> 
>  *Quote:*   USE="mmx mmxext 3dnow 3dnowext sse sse2"  w czym pomogą mi te flagi?
> 
> 

 

przeczytaj opis flag :]

```
euse -i <nazwa_flagi>
```

ogólnie jest to wsparcie w programach dla odpowiednich instrukcji procesora

----------

## Pryka

A ja polecam Ci zainstalować przyjemny programik ufed

```
emerge ufed -av
```

Dzięki niemu będziesz mógł przejrzeć wszystkie flagi USE(z opisami) wybrać te które Cię interesują, a na koniec zapisać wszelkie zmiany w /etc/make.conf oczywiście wszystko z poziomu programu.

----------

## Marvell

Przyjemny programik;)

Więc co myślicie z tym march=k8? 

Jeśli zmienię tę wartość to potem chyba powinienem przekompilować cały system, prawda?

No i nie wiem w końcu co z wartością timer frequency. Teraz mam 300, ale może lepsze będzie 1000? :Smile:  sam nie weim już w koncu.

----------

## soban_

 *Marvell wrote:*   

> Więc co myślicie z tym march=k8? 
> 
> Jeśli zmienię tę wartość to potem chyba powinienem przekompilować cały system, prawda?

  Nie musisz, ale jesli Ci sie chce to nic nie stoi na przeszkodzie, wydajnosc systemu moze podskoczyc maksymalnie o 10%, ale i to jest chyba przesada. Wazniejsze jest to, abys po zmianie flag sprawdzil czy world nie chce jakis zaleznosci pociagnac - ewentualnie przekompilowac paczek w ktorych dokonales zmian, poprzez dodanie poszczegolnych flag:

```
emerge -avquDN world
```

 Tym poleceniem mozesz to sprawdzic i ewentualnie przekompilowac lub pociagnac nowe zaleznosci zwiazane z flagami.

----------

## ryba84

No i pamiętaj po takiej zabawie o revdep-rebuild. Później możesz wywalić niepotrzebne zależności przez emerge --depclean, tylko sprawdź czy coś nie będzie Ci potrzebne z tego co ma zostać wywalone. Po usunięciu zbędnych pakietów zapuść jeszcze raz revdep-rebuild.

----------

## lsdudi

 *ryba84 wrote:*   

> 
> 
> Czy jeśli zmniejsze timer frequency to mogę się spodziewać poprawy w działaniu maszyny wirtualnej? Procek jednordzeniowy.

 

przy jednej działającej maszynie wirtualnej raczej wzrost będzie nie duży 

przy większej ilości schodzi się do 100Hz

----------

## soban_

Troche[OT]

 *ryba84 wrote:*   

> No i pamiętaj po takiej zabawie o revdep-rebuild. Później możesz wywalić niepotrzebne zależności przez emerge --depclean, tylko sprawdź czy coś nie będzie Ci potrzebne z tego co ma zostać wywalone. Po usunięciu zbędnych pakietów zapuść jeszcze raz revdep-rebuild.

 

Skrypt jakis by sie przydal do aktualizacji systemu, ktory po usunieciu jakiegos pakietu przez --depclean robi revdep-rebuild. Ewentualnie gdy sie system wywroci na danym pakiecie podczas robienia akutalizacji world to wznawia upgrade uzywajac (emerge --skipfirst --resume). Po czym na samym koncu jeszcze raz probuje upgrade world wykonac. Od jakiegos czas aktualizuje systemu robie uzywajac nastepujacego zbioru polecen:

```
layman -S && eix-sync && emerge -vquDN world && emerge --depclean && revdep-rebuild && eix-remote update
```

 Jednak brakuje tutaj jak widac funkcji wznawiajacej z pominieciem pierwszego pakietu itp. (czasami bywa denerwujace jak ogladam film i aktualizacja wymaga ~80 pakietow przy czym emerge wywala sie na ~1-10) A moze juz istnieje cos takiego? ;-) oczywiscie nie da sie calkowicie zautomatyzowac upgrade systemu - wiadomo czasami trzeba dodac jakas flage o ktora emerge ,,krzyczy", jednak takie cos mogloby byc dosyc uzyteczne.[/OT]

----------

## ArnVaker

@soban_

```
layman -S && eix-sync && emerge -avquDN world --keep-going
```

+

```
dispatch-conf && emerge -av --depclean && revdep-rebuild && lafilefixer --justfixit
```

----------

## soban_

O, dziekuje za szybka odpowiedz. Jednak istnieje cos takiego i nie trzeba skryptu.

----------

## Marvell

Mam jeszcze problem z wyglądem aplikacji pod qt (kadu opera).

Przy odpaleniu przez konsolę którejś z nich mam na początku:

```

QGtkStyle was unable to detect the current GTK+ theme.
```

I np kadu nie integruje mi się ze stylem GTK, mimo że w opcjach jest tak ustawione.

W menu opery czcionki są poszarpane i źle to wygląda.

Czy to wina jakiejś brakującej flagi? Pod rootem jest tak samo.

----------

## ryba84

Utwórz sobie w katalogu usera plik gtkrc-2.0. W nim ustaw coś takiego:

```
include "/home/ryba/.themes/Green-lemon/gtk-2.0/gtkrc"

gtk-icon-theme-name="OxygenRefit2-green-version"
```

Oczywiście z odpowiednią ścieżką do swojego theme  :Wink: 

----------

## Marvell

Używam fluksa, więc mam taki plik od dawna, ale te ustawienia są brane pod uwagę tylko w takich programach pod GTK, a właśnie pod qt już nie.

A czcionki jak już wspomniałem są poszarpane itd.

http://iv.pl/images/86170360290467843115.png

Tak to wygląda

//EDIT:

Wstyd się przyznać, ale po aktualizacji zapomniałem przepuscic dispatch-conf:)

Teraz już gra wszsytko:)

----------

