# [X11] xorg rozrasta się w pamięci

## ffurbo

Obserwuję to zjawisko od początku mojej "przygody" z Gentoo. Po odpaleniu xserwera proces X zajmuje w pamięci cos ponad 40 MB i w czasie użytkowania, uruchamiania kolejnych programów, rozrasta się coraz bardziej. Wydawało by się, że po wyłączeniu tych aplikacji pamięć powinna się zwolnić, jednak nie zawsze to następuje. Po kilku godzinach pracy proces X potrafi zajmować ponad 400MB RAM, mimo że jedynym uruchomionym programem jest manager okien. Najbardziej widoczne jest to kiedy pod emulatorem terminala (Konsole, urxvt) uruchomię emerge. Zdarzyło się, że po skończeniu jekiejś większej aktualizacji system zaczął korzystać ze swapa, a posiadam 640 MB RAM.

Zjawisko to jest niezależne od wersji xorg (obecnie 7), ani WM/DM (w tej chwili KDE, jednak długo pracowałem na fvwm).

Czy to co opisuję jest normalne?

Zauważyłem, że kiedy nie uruchamiam terminala rozmiar X w pamieci oscyluje koło 120MB.

----------

## Gogiel

U mnie pomoglo calkowite wylaczenie swapa.

----------

## szolek

@ Gogiel

Ile masz ramu? 

U mnie 512M na pokładzie. System zazwyczaj zajmuje w swapie jakieś 100k-200k, w pamięci oscyluje około 110M bez buforów. Zastanawiam się czy nie wyłączyć swapa.

----------

## Gogiel

 *szolek wrote:*   

> @ Gogiel
> 
> Ile masz ramu? 
> 
> U mnie 512M na pokładzie. System zazwyczaj zajmuje w swapie jakieś 100k-200k, w pamięci oscyluje około 110M bez buforów. Zastanawiam się czy nie wyłączyć swapa.

 

Rowniez 512M.

----------

## ffurbo

Ja wyłączylem swapa kiedy dokupilem kostke 512 MB. Kiedy zauważylem te "wycieki" włączyłem go spowrotem w nadziei, że to co wycieka będzie przenoszone to swapa.

EDIT: Czy te problemy mogą być spowodowane przez Pythona ?

----------

## Aktyn

U mnie jest tak, po właczeniu jakieś 80-100 MB, podczas używania to róznie   :Wink:  , natomiast po wyłączniu wszystkich aplikacji, teraz mam jakieś 140Mb razem z mozillą. Oczywiście bez pamięci cache. No bo z nią to zapcha cały ram.

----------

## arach

```
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           

27475 root      15   0 54516  27m 4572 S  6.3 10.9   4:02.75 X

```

A mi się xorg nie rozrasta, p2 400, 256MB ramu, drugie tyle swapa, CFLAGS="-Os -march=i686 -pipe -fomit-frame-pointer", xorg kompilowane jeszcze na "starym" gcc-3.4.5 a nie na 4.1.0.

----------

## Aktyn

To jak sie chwalimy

```
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

 5505 root      15   0  110m  15m 2844 S  0.7  2.1  11:34.30 X
```

CFLAGS = "-O2 -march=k8 -mtune=k8 -msse3 -fforce-addr -mfpmath=387 -s -DNDEBUG  -funit-at-a-time -fpeel-loops -fmove-all-movables -fomit-frame-pointer -frename-registers -funroll-all-loops -minline-all-stringops -mno-align-stringops -freduce-all-givs -fno-ident"

gcc 3.4.4

----------

## rasheed

Używasz może prelinka?

----------

## ffurbo

 *rasheed wrote:*   

> Używasz może prelinka?

 

Nie

Może tu coś nie tak:

```

23:26:00 ~ $ emerge --info

Portage 2.1_pre5-r2 (default-linux/x86/2005.0, gcc-3.4.5, glibc-2.3.6-r3, 2.6.15-gentoo-r7 i686)

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

System uname: 2.6.15-gentoo-r7 i686 AMD Athlon(tm) XP 1700+

Gentoo Base System version 1.12.0_pre16

dev-lang/python:     2.4.2-r1

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.59-r7

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1

sys-devel/binutils:  2.16.1-r2

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.11-r3

ACCEPT_KEYWORDS="x86 ~x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=athlon-xp -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/share/X11/xkb /usr/share/config /var/bind /var/qmail/control"

CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"

CXXFLAGS="-O2 -march=athlon-xp -pipe"

DISTDIR="/ports/distfiles"

FEATURES="autoconfig distlocks sandbox sfperms strict"

GENTOO_MIRRORS="ftp://ftp.icm.edu.pl/pub/Linux/distributions/gentoo"

LC_ALL="pl_PL.UTF-8"

LINGUAS="pl"

PKGDIR="/ports/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/ports"

PORTDIR_OVERLAY="/root/portage2 /usr/local/portage-r"

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

USE="x86 3dnow 3dnowex X aalib alsa apm avi bash-completion berkdb bitmap-fonts crypt cups directfb dri eds emboss encode fbcon flac foomaticdb fortran gdbm gecko-sdk gif gimpprint gpm gstreamer gtk gtk2 imlib java javascript jpeg kde kdeenablefinal lcms libg++ libwww mad mikmod mmx mmxext motif mozilla mozsvg mp3 mpeg ncurses nls nvidia ogg oggvorbis opengl pam pdflib perl png python qt quicktime readline real samba sdl slang spell sse ssl svg svga tcltk tcpd truetype truetype-fonts type1-fonts unicode vorbis wma xcomposite xml2 xmms xosd xv xvid zlib elibc_glibc input_devices_keyboard input_devices_mouse kernel_linux linguas_pl userland_GNU video_cards_nvidia video_cards_nv video_cards_vesa"

Unset:  ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, LANG, LDFLAGS, MAKEOPTS

```

----------

## argasek

 *Aktyn wrote:*   

> To jak sie chwalimy
> 
> ```
> CFLAGS = "-O2 -march=k8 -mtune=k8 -msse3 -fforce-addr -mfpmath=387 -s -DNDEBUG  -funit-at-a-time -fpeel-loops -fmove-all-movables -fomit-frame-pointer -frename-registers -funroll-all-loops -minline-all-stringops -mno-align-stringops -freduce-all-givs -fno-ident"
> ```
> ...

 

To jak się już chwalimy, że nie czytamy man gcc  :Wink: , to:

 *Quote:*   

> 
> 
>       -march=cpu-type
> 
>            Generate instructions for the machine type cpu-type.  The
> ...

 

----------

## Aktyn

 *argasek wrote:*   

> To jak się już chwalimy, że nie czytamy man gcc , 

 

Czytamy czytamy   :Smile:  , ale zawsze cos można przeoczyć, szczególnie jak sie dużo czyta różnych rzeczy i po angielsku, -funit-at-a-time też jest dołączona do -O2, no i flagi powstawały podczas czytania forum, i nie są reprezentatywne, ani też jakoś bardzo przemyślane

----------

## arsen

na pochybel ricerom  :Smile: , moje wypasione flagi  :Smile: 

```

CFLAGS="-O2 -march=athlon-xp -pipe"

```

----------

## Aktyn

 *arsen wrote:*   

> na pochybel ricerom , moje wypasione flagi 
> 
> ```
> 
> CFLAGS="-O2 -march=athlon-xp -pipe"
> ...

 

co wy z tymi ricerami? man gcc: *Quote:*   

>         -O2 turns on all optimization flags specified by -O.  It also turns on the following
> 
> optimization flags: -fforce-mem -foptimize-sibling-calls -fstrength-reduce -fcse-fol-
> 
> low-jumps  -fcse-skip-blocks -frerun-cse-after-loop  -frerun-loop-opt -fgcse  -fgcse-lm
> ...

 

Dałem swoje flagi jako przykład że X-y z tego powodu sie mi nie rozlatują.

Poza tym wiele programów i tak modyfikuje flagi, czasem do -O1, czasem wogule bez optymalizacji lecą. Nie znam bebechow pracy z bibliotekami, (mam na myśli juz kod asmeblerowy) ale uważam że przynajmniej w założeniu nie powinno mieć to znaczenia. A flagi optymalizacyjne po to są by ich używać.

W sumie miałem kiedys system na -O0 -i686 (to dopiero było na pochybel), tak sobie machłem, w sumie czas kompilacji wzrasta, a w sumie na sprzęcie z athlonem nie widziałem specjalnie róznicy w użytkowaniu. Mam na myśli X-y i takie tam ogólne aplikacjie. Nie pamietam tylko czy przypadkiem i tak nie szła kompilacja niektórych na -O2.

+++Edit

Na dodatek spotkałem sie z rzeczami co sie na -O2 wywalały z gcc-3.3, gcc-3.4 było już OK. Wiec wcale to nie jest takie wszystko jednoznaczne.

Dla mnie albo coś jest dobre i działa, albo działa czasami lub czasem zawodzi i wówczas jest do bani.

----------

## arsen

@Aktyn: nie ma co się bulwersować  :Smile: , to była lekka prowokacja z mojej strony tylko  :Smile: , poprostu śmieszy mnie jak ludzie prześcigają się flagami w myśł kto ma dłuższe  :Smile:  a w rzeczywistości manuala do gcc nie widzieli na oczy  :Smile: . Oczywiście nie pisze o twojej osobie bo widzę że z manuala korzystać potrafisz  :Smile: . No ale kończę z tym OT  :Smile: 

----------

## Aktyn

 *arsen wrote:*   

> @Aktyn: nie ma co się bulwersować , to była lekka prowokacja z mojej strony tylko , poprostu śmieszy mnie jak ludzie prześcigają się flagami w myśł kto ma dłuższe  a w rzeczywistości manuala do gcc nie widzieli na oczy . Oczywiście nie pisze o twojej osobie bo widzę że z manuala korzystać potrafisz . No ale kończę z tym OT 

 

Dobra też kończe, nie jestem zbulwersowany (za zbytnio   :Wink:   ), też mnie smieszy dawanie flag ilościowo, ale te które mam stwierdziłem że sa dość dobre. Byłem ciekaw, wypróbowałem i takie zostały. Dlatego też nie mam -O3.

Mam kilka rzeczy które mi rozpychają pamiec do załamania systemu, ale stwierdziłem już że to nie kwestia flag. Może założe wątek jak pare rzeczy jeszcze sprawdze.

..::Milu Edit:

Polskie forum i obowiązuje apel więc piszemy po polsku nie po polskiemu!!

tesz=> też

----------

## YANOUSHek

Hej!

Ja ostatnio odkryłem, że mój xorg też się rozrasta. Zawsze robiłem restart xów po jakimś czasie, żeby tego uniknąć, jednak ostatnio nie używałem kompa przez jakiś czas i odkryłem, że Xy najpierw puchną (zdaża się u mnie nawet do 30% RAMu przy 512MB), jednak po jakimś czasie znowu maleją -- obecnie mają niecałe 10%.

----------

## argasek

 *YANOUSHek wrote:*   

> Hej!
> 
> Ja ostatnio odkryłem, że mój xorg też się rozrasta. Zawsze robiłem restart xów po jakimś czasie, żeby tego uniknąć, jednak ostatnio nie używałem kompa przez jakiś czas i odkryłem, że Xy najpierw puchną (zdaża się u mnie nawet do 30% RAMu przy 512MB), jednak po jakimś czasie znowu maleją -- obecnie mają niecałe 10%.

 

Jeśli używasz Firefoxa, to całkiem możliwe. Z tego co jednak opisuje ffurbo, u niego ten problem nie jest związany z FF. Poza tym - bez przesady. 10% RAMu przy 512 MB = 51 MB, 30% to 150MB. Przy surfowaniu w paru otwartych zakładkach, stronach z flash itp. to całkiem możliwe, nie jest to aż tak strasznie wielka ilość.

----------

## Gabrys

Jak zamknę wszystko (poza KDE), a komp chodzi z tydzień, to Xorg zajmuje jakieś 300 MB (rezerwuje, czy coś w tym stylu, w sensie, że nie używa, kto wie jak to wyjaśnić niech to zrobi). Podejrzewam, że u mnie może to być problem z Compositem. Zdarza się też od czasu do czasu, że przy zamykaniu aplikacji GLX (choćby analizator z amaroKa) killuje się X. Czasem też wymięka w innych sytuacjach. Uprzedzam pytania: Xorg 6.9.0, cienie i efekty przejścia wyłączone, KDE 3.5 (najnowsze ~ z portage), Qt z overlaya nxsty'ego (zauważyłem, że przy tym Qt Xorg z Composite nie pożera całego procesora, co się dotąd zdarzało po paru godzinach pracy).

----------

