# Kompilacja Wine a pamięć.

## BeteNoire

Od kilku wersji wstecz kompilacja Wine zajmuje mi pamięć zamiast dysku. W pewnych momentach jest to cała objętość ramu (884mb) + drugie tyle w swapfile robionego przeze mnie tylko po to, żeby skompilować nową wersję Wine. Nawet kompilacja OpenOffice nie zżera tyle pamięci.

Problem polega na tym, że kiedy system ma mocno zapchaną pamięć to "przycina", bywa, że przez kilkadziesiąt sekund nie można wykonać żadnej operacji. 

Nie pamiętam przy której wersji Wine to się zaczęło, ale wiem że wcześniej problem nie występował. Kompilaty Wine spokojnie sobie "zapychały" dysk (było tego nawet do 1,5 gb), co nie wpływało na wydajność systemu. 

Nie wiem czy przyczyną jest coś w moim systemie czy coś w sposobie kompilacji Wine, może zmieniłem pod drodze coś o czym nie pamiętam - raczej mało prawdopodone. W kwestii flag kompilatora zawsze używam podobnego zestawu. 

```
grep FLAG /etc/make.conf

CFLAGS="-march=athlon64 -msse3 -Os -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

Wiem, że to -pipe odpowiada za przechowywanie kompilatów w pamięci, ale - jak już powiedziałem - wcześniej używałem tej flagi i nie było problemu z pamięcią pochłanianą przez kompilację Wine.

Czy inni też tak mają czy tylko ja? Jeśli tylko ja to gdzie szukać przyczyny? Jeśli nie tylko ja to dlaczego COŚ się zmieniło?

----------

## wodzik

juz pare razy kompilacja wine wywalila sie z powodu zajecia calej wolnej pamieci/swapu. mam 512 Mb ramu i jakos podobnie swapa. na razie dodalem >=app-emulation/wine-0.9.21 do /etc/portage/package.mask. moje flagi to:

```
CFLAGS="-march=athlon-xp -Os  -pipe -fomit-frame-pointer "

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

```

wiec chyba calkiem bezpieczne.

----------

## szolek

U mnie to samo  :Sad: .

Spory czas wine mi nie było do niczego potrzebne ale mój ojciec potrzebuje używać programu, z który prawidłowo pracuje pod wine. Tak więc problem ponownie mnie obowiazuje.

Flagę -pipe już kiedyś wyłączałem dla kompilacji wine i efekt pozostawał niezmienny. Z tego co widzę też używasz -Os zastanawiam się czy nie jest to problem tej flagi.

Jeśli ktoś ma inną optymalizację i ma lub nie ma tego problemu proszę o cynk.  :Wink: 

Odnośnie mojego winę kompilację zostawię na nockę. Wiatraki mam ciche, więc wytrzymam (znaczy usnę).

Dla formalności:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -Os -pipe -fomit-frame-pointer -falign-functions=64 -fvisibility-inlines-hidden"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j2"
```

----------

## BeteNoire

@wodzik, wspomniany przeze mnie swapfile "rozwiąże" Twój problem bez maskowania.

@szolek, rekompilację worlda z -Os zrobiłem tydzień temu. Wcześniej miałem -O2 i też emerge wine zapychał pamięć.

----------

## argasek

Nie jesteś sam (512MB RAM + 128MB swap, ostatnio poszerzam do 1.5GB swap via swapfile). Zastanawiam się czy problemem nie jest tutaj -j2... Czy bez -j2 jest tak samo?

----------

## szolek

 *argasek wrote:*   

> Nie jesteś sam (512MB RAM + 128MB swap, ostatnio poszerzam do 1.5GB swap via swapfile). Zastanawiam się czy problemem nie jest tutaj -j2... Czy bez -j2 jest tak samo?

 

To samo. Zmieniałem już na -j1 a nawet komentowałem.

 *BeteNoire wrote:*   

> @szolek, rekompilację worlda z -Os zrobiłem tydzień temu. Wcześniej miałem -O2 i też emerge wine zapychał pamięć.

 

Toś mnie pocieszył  :Sad: .Last edited by szolek on Sat Nov 11, 2006 3:05 pm; edited 1 time in total

----------

## wodzik

@BeteNoire: tylko nie bardzo mam gdzie zrobic tego swapa. ;/

a co do kompilacji  j1 to wydaje mi sie ze juz probowalem jakis czas temu, przy wylaczonych xsach i na 1 inicie (zawsze troche ramu wiecej). ale efekt ten sam.

----------

## szolek

 *wodzik wrote:*   

> @BeteNoire: tylko nie bardzo mam gdzie zrobic tego swapa. ;/

 

Jak masz trochę miejsca na którejś partycji utwórz tam swapfile.

----------

## BeteNoire

@wodzik, od początku piszemy tu o SWAP-FILE. O pliku swap w dowolnym pustym miejscu na którejkolwiek partycji.

W sieci znajdziesz poradniki jak zrobić PLIK SWAP.

----------

## trzcionek

Ja też zastanawiałem się dlaczego nagle moje gentoo nagle zaczęło się przycinać, a później symulowało coś w rodzaju windowsowego zawieszenia. Ja wine włączyłem przed wyjściem na uczelnie i jak wróciłem to już było po problemie. (512MB RAM 750MB swap)  :Smile:  To nie rozwiązuje problemu, ale chciałem się podzielić z wami moimi odczuciami    :Twisted Evil: 

```
gentoo linux # genlop -ti wine

 * app-emulation/wine

     Thu Nov  9 15:16:56 2006 >>> app-emulation/wine-0.9.24

       merge time: 1 hour, 50 minutes and 34 seconds.

   Total builds: 1

   Global build time: 1 hour, 50 minutes and 34 seconds.

   Info about currently installed ebuild:

   * app-emulation/wine-0.9.24

   Install date: Thu Nov  9 15:16:56 2006

   USE="alsa cups gif hal jpeg ldap ncurses opengl oss X -arts -dbus -debug -esd -glut -jack -lcms -nas -scanner -xml"

   CFLAGS="-march=pentium-m -O3 -pipe -fno-ident"
```

----------

## tboloo

Ja nie mam takich problemów. Emergowałem wine dwa razy (pierwszy raz dałem flagę opengl, co w przypadku karty sis651 jest pomyłką) i 

```

 genlop -ti wine

 * app-emulation/wine

     Sat Nov 11 09:47:17 2006 >>> app-emulation/wine-0.9.24

       merge time: 28 minutes and 7 seconds.

     Sat Nov 11 14:05:42 2006 >>> app-emulation/wine-0.9.24

       merge time: 29 minutes and 9 seconds.

   Total builds: 2

   Global build time: 57 minutes and 16 seconds.

   Average merge time: 28 minutes and 38 seconds.

   Info about currently installed ebuild:

   * app-emulation/wine-0.9.24

   Install date: Sat Nov 11 14:05:42 2006

   USE="alsa cups dbus gif hal jpeg ncurses oss scanner X -arts -debug -esd -glut -jack -lcms -ldap -nas -opengl -xml"

   CFLAGS="-O2 -march=pentium4 -pipe"

```

cały czas używałem systemu. Mam 512ram-u i swap-u 600MB, i MAKEOPTS="-j2"

Tak strzelam - może to LDFLAGS ??

----------

## BeteNoire

```
grep LDF /etc/make.conf

LDFLAGS="-Wl,-O1"
```

Od dawna takie mam, wcześniejsze Wine'y kompilowały się z tym OK. Wg mnie problem leży gdzieś pomiędzy deweloperami Wine a opiekunami Wine w portage.

A MAKEOPTS="-j2" zaleca nasza "biblia" - handbook.

----------

## mar_rud

Przed powiększeniem ramu do 1GB też miałem problemy z kompilacją wine (od któreś wersji, bo wcześniej nie). Jedyne co pomagało, to chyba usunięcie flagi -pipe, aby kompilator używał plików tymczasowych zamiast potoków. Inaczej nie dawało się przejść kompilacji wine na komputerze z małą ilością pamięci (ram + swap).

Z tego co pamiętam, jedynie z wine miałem takie problemy. Teraz mam 1GB ram + 512MB swap i wine mi nie straszny  :Smile: .

EDIT:

Zgodnie z wątkiem: Wine emerge uses up all of RAM and swap. [SOLVED], kompilacja wine korzysta dużo z równoległości i ograniczenie tego zachowania przez m.in. MAKEOPTS="-j1" pomaga zredukować wymagania na pamięć.

----------

## kneczaj

 *Quote:*   

> rekompilację worlda z -Os zrobiłem tydzień temu. Wcześniej miałem -O2 i też emerge wine zapychał pamięć.

 

Może to i offtopic, ale czy system działa szybciej z -Os?

----------

## przemos

 *trzcionek wrote:*   

> Ja też zastanawiałem się dlaczego nagle moje gentoo nagle zaczęło się przycinać, a później symulowało coś w rodzaju windowsowego zawieszenia. Ja wine włączyłem przed wyjściem na uczelnie i jak wróciłem to już było po problemie. (512MB RAM 750MB swap)  To nie rozwiązuje problemu, ale chciałem się podzielić z wami moimi odczuciami   
> 
> ```
> gentoo linux # genlop -ti wine
> 
> ...

 

No fakt - trochę przydługo jak na 512RAM+750SWAP

U mnie wygląda to tak:

```
     Sun Sep 17 19:05:01 2006 >>> app-emulation/wine-9999

       merge time: 40 minutes and 3 seconds.

   USE="alsa cups dbus gif jpeg ncurses opengl oss X -arts -debug -esd -glut -hal -jack -lcms -ldap -nas -scanner -xml"

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

   CXXFLAGS="-O2 -march=athlon-xp -pipe -fvisibility-inlines-hidden  -DNDEBUG"

   LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=both"

   MAKEOPTS="-j2"

"
```

athlon-xp-1.8ghz, 256 RAM, 500 SWAP

----------

## wodzik

@BeteNoire: przecież pisze, że nie mam miejsca ;]

chyba się potem pobawię w wywalanie zbędnych pierdół dysku (bo zawalić 250 Gb to trochę przesada) i skompiluje sobie tego wine.

----------

## c2p

U mnie kompilacja wine zapychała pamięc tylko przy -Os, więc dla wine mam ustawione -O2 i kompiluje się bez żadnych komplikacji.

----------

## BeteNoire

 *wodzik wrote:*   

> @BeteNoire: przecież pisze, że nie mam miejsca ;]
> 
> (...) bo zawalić 250 Gb to trochę przesada)

 

Hehehe, rozbawiłeś mnie  :Very Happy: 

Mój laptop, gdzie kompilowałem Łajn, ma 40GB.

 *c2p wrote:*   

> U mnie kompilacja wine zapychała pamięc tylko przy -Os, więc dla wine mam ustawione -O2 i kompiluje się bez żadnych komplikacji.

 

U mnie zapycha w obu przypadkach.

Niby wszyscy znamy rozwiązanie problemu - większa pamięć (wymiany), ale moje pytanie pozostaje aktualne: dlaczego dzieje się tak jak się dzieje, skoro wcześniej się nie działo?

----------

## c2p

app-emulation/wine-0.9.25:

```
Sat Nov 11 16:18:17 2006 >>> app-emulation/wine-0.9.25

       merge time: 1 hour, 28 minutes and 32 seconds.

USE="alsa cups dbus gif glut hal jpeg lcms ldap ncurses opengl oss scanner xml X -arts -debug -esd -jack -nas"

CFLAGS="-march=pentium4 -pipe -O2"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -s -Wl,-z,now"

MAKEOPTS="-j2"
```

Celeron 1,8Ghz, 256DDRAM, 500MB SWAP, HDD 40GB.

Zapycha całą pamięc tylko przy pliku /var/tmp/portage/wine-0.9.25/work/wine-0.9.25/dlls/oleaut32/tests/vartest.c i przy -Os.

Więc dla wine mam ustawione w /etc/portage/env/app-emulation/wine:

```
CFLAGS="-march=pentium4 -s -pipe -fomit-frame-pointer -O2"

CXXFLAGS="-march=pentium4 -s -pipe -momit-leaf-frame-pointer -O2"
```

Myślę, że jedynym problemem przy kompilacji wine są flagi optymalizacyjne. IMHO dla takiego olbrzyma nie ma sensu za bardzo wymyślać jakichś "bajeranckich" flag. Słoń nigdy nie stanie się motylkiem  :Wink: .

----------

## szolek

U mnie z -O2 nie ma jednak problemów z kompilacją.

Wynik:

```
Sun Nov 12 16:29:16 2006 >>> app-emulation/wine-0.9.24

merge time: 24 minutes and 29 seconds.
```

Przyznam że rekord z -Os to ponad 6 godzin  :Smile: .

----------

## wodzik

faktycznie z -O2 poszedl bez problemow. w tym czasie sluchalem muzy, mialem odpalone kilka plikow pdf, ffa, kilka docow i jeden akrkusz kalkulacyjny.

----------

## Gabrys

MAKEOPTS="-j2" zaleca handbook myśląc, że mamy nieprzebrane zapasy pamięci i optymalizując w ten sposób _czas procesora_ potrzebny do kompilacji.

Ja mam -j1, bo jakby nie było -j2 zżera prawie dwa razy więcej pamięci i tego nikt nie przekroczy. A że ilością pamięci nie grzeszę, to stwierdziłem, że jeden kompilowany program na raz starczy.

----------

## 13Homer

 *Gabrys wrote:*   

> MAKEOPTS="-j2" zaleca handbook myśląc, że mamy nieprzebrane zapasy pamięci i optymalizując w ten sposób _czas procesora_ potrzebny do kompilacji.

 

Nie ma co się dziwić, Gentoo oparty jest na kompilacji instalowanych programów, a kompilacja wymaga przede wszystkim czasu (firefox, thunderbird, OOo). Ja zrezygnowałem na razie z kompilacji OOo po hardmask flagi mono (i tak jej nie używałem, nie wiem dlaczego chce go przebudowywać), bo nie chce mi się zostawiać włączonego laptopa na całą noc.

 *Quote:*   

> Ja mam -j1, bo jakby nie było -j2 zżera prawie dwa razy więcej pamięci i tego nikt nie przekroczy. A że ilością pamięci nie grzeszę, to stwierdziłem, że jeden kompilowany program na raz starczy.

 

Ja tez mam -j1, ale z innego powodu. Trafił mi się jeden z programów (bodajże krusader), który nie kompilował się z -j2.

----------

