# Gentoo mi usa troppa RAM

## mrfabiolo

Ho installato Gentoo a 64bit sul mio portatile da poco tempo. Ho il window manager Awesome (che dovrebbe essere molto leggero).

Ho installato con emerge xdm, okular, gimp, networkmanager, firefox, skype e poche altre cose.

Quando avvio il computer, e do startx per avviare Awesome, apro un terminale e do "free" ottengo:

```
             total       used       free     shared    buffers     cached

Mem:       3930420     435496    3494924      32904      27536     219472

-/+ buffers/cache:     188488    3741932

Swap:      1572860          0    1572860
```

(436MB di ram che già mi sembrano eccessivi). Anche su Debian ho awesome con praticamente gli stessi programmi installati (con l'apt) ma all'avvio senza che apro nulla (se non il terminale) mi dà soli 100MB circa. E se apro firefox mi resta comunque sotto i 300MB (ma mi pare anche ben di meno). (giustamente: non uso mica gnome o kde!)

se apro firefox (su Gentoo) mi dà:

```
             total       used       free     shared    buffers     cached

Mem:       3930420     728692    3201728      56032      28680     314728

-/+ buffers/cache:     385284    3545136

Swap:      1572860          0    1572860
```

(ok, che non sono tantissimi, però cmq forse è un po' strano che firefox (con google aperto e basta) mi faccia occupare quasi 300MB più di prima.

se incomincio ad aprire qualche video su youtube i Gb di ram mi salgono all'impazzata fino ad impallarmi tutto. Ugualmente se compilo qualcosina (anche robette piccole) o faccio qualcosa di poco conto. Dopo non molti minuti mi ritrovo con la ram quasi occupata che il sistema si trova ad usarmi la swap. Sono sicuro che c'è qualcosa che non va. Se faccio le stesse cose su Debian non arrivo mai a superare 1 GB.

Non saprei nemmeno cosa postarvi, ditemi voi. Ho fatto un'installazione normalissima come dall'handbook ufficiale.

----------

## mrfabiolo

Anzi, forse ho cambiato idea... Ho fatto un po' di prove aprendo programmi e richiudendoli numerose volte. Credo che non ci siano strani bug, ma che tutto funzioni correttamente. Anche su Debian (nonostante però mi pare utilizzi meno ram quasi in ogni caso) riesco a fargli superare 1 GB abbastanza facilmente.

Tuttavia non capisco come abbia fatto più volte ad arrivare a 4GB di ram. Credevo fosse una peculiarità soltanto di windows....xd

Boh, cmq sto guardando un po' in internet come utilizzare meno ram, ma se avete consigli dite pure.

----------

## ciro64

Anche a me è capitato di avere difficoltà con un sistema basato su Core2 duo + 2 GiB di ram.

ed il problema era che saturando velocemente la RAM, passava allo swapping.

In primis, un sistema a 64 bits tende ad occupare più ram di un sistema a 32 bits.

Però potrebbe dipendere anche dal magari aver attivato flags particolari (per quel che ho letto in questo forum, per esempio usare un -O3 per CFLAGS e CXXFLAGS tende a far usare più memoria senza però aver benefici in termini di percformance

Prova a postare il tuo

```

# grep FLAG /etc/portage/make.conf

# emerge --info
```

Ciao.

----------

## pierino_89

Controlla processo per processo chi ti sta mangiando tutta la ram. Mi sembra il tipico caso in cui qualche processo impazzisce e inizia a fare cose di non sua competenza. Tipo vlc, che di tanto in tanto quando lo chiudi resta in background a far qualcosa di misterioso utilizzando il 100% di una cpu.

----------

## loxdegio

In realtà questo topic non ha molta ragione di essere per il semplice fatto che in linux la memoria primaria è gestita in modo particolare (applicazioni zombie o impazzite a parte)

In pratica a differenza di Windows la memoria reputata "libera" non è *quasi* mai tale, ma viene mantenuta allocata in modo da creare una sorta di cache per velocizzare l'apertura dei processi eventualmente già utilizzati, mentre aumenta se apri nuovi programmi che non hai ancora usato o che sono stati deallocati per fare spazio ad altre attività.

@mrfabiolo: tu hai postato l'output del comando free. Correttissimo tra le altre cose, ma è l'unico comando di lettura della memoria che non tiene conto del fatto che ho raccontato prima  :Razz:  Se vuoi davvero controllare la memoria in uso ti conviene utilizzare un System Monitor fornito con i maggiori DE in circolazione e allora avrai la memoria calolata in "Windows-style" e sarai più tranquillo.

La questione dello swap invece dipende dalla "pressione" in memoria primaria tra memoria effettivamente usata e memoria cached. Se la pressione è alta e quindi la difficoltà di deallocazione di spazio obsoleto per allocare nuova memoria utile aumenta, il kernel "swappa", ma anche questa azione dovrebbe essere utilizzata il meno possibile.

Per ridurre la quantità di swap ti consiglio di vedere i numerosi articoli in rete sul valore sysctl vm.swappiness e magari abbassarlo un po' ed eventualmente valutare l'utilizzo di qualche blocco di ZRAM

----------

## pierino_89

 *loxdegio wrote:*   

> 
> 
> @mrfabiolo: tu hai postato l'output del comando free. Correttissimo tra le altre cose, ma è l'unico comando di lettura della memoria che non tiene conto del fatto che ho raccontato prima  Se vuoi davvero controllare la memoria in uso ti conviene utilizzare un System Monitor fornito con i maggiori DE in circolazione e allora avrai la memoria calolata in "Windows-style" e sarai più tranquillo.
> 
> 

 

Beh no, in "free" c'è la riga:

```
-/+ buffers/cache: 
```

 che è al netto di cache e cose varie. Ed effettivamente nelle due righe riportate differiscono di un bel po'.

 *Quote:*   

> 
> 
> La questione dello swap invece dipende dalla "pressione" in memoria primaria tra memoria effettivamente usata e memoria cached. Se la pressione è alta e quindi la difficoltà di deallocazione di spazio obsoleto per allocare nuova memoria utile aumenta, il kernel "swappa", ma anche questa azione dovrebbe essere utilizzata il meno possibile.
> 
> Per ridurre la quantità di swap ti consiglio di vedere i numerosi articoli in rete sul valore sysctl vm.swappiness e magari abbassarlo un po'

 

Questo è vero e sacrosanto, vm.vfs_cache_pressure e vm.swappiness se regolati in modo giusto migliorano di molto la reattività del sistema. Tuttavia non diminuiscono in alcun modo l'utilizzo di memoria   :Razz: 

 *Quote:*   

> ed eventualmente valutare l'utilizzo di qualche blocco di ZRAM

 

Dai, con 4GB di ram posso capire l'evitare l'utilizzo di tmpfs, ma chiamare in causa ZRAM mi pare un po' eccessivo  :Very Happy: 

----------

## loxdegio

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   
> 
> @mrfabiolo: tu hai postato l'output del comando free. Correttissimo tra le altre cose, ma è l'unico comando di lettura della memoria che non tiene conto del fatto che ho raccontato prima  Se vuoi davvero controllare la memoria in uso ti conviene utilizzare un System Monitor fornito con i maggiori DE in circolazione e allora avrai la memoria calolata in "Windows-style" e sarai più tranquillo.
> 
>  
> ...

 

Chiederei ad @mrfabiolo di postare l'output del comando

```
free -h
```

In modo da avere gli utilizzi di memoria un po' più chiari.

E comunque @pierino_89 non ho ancora ben chiarito cosa intende free per memoria cached (ovvero dove viene messa)

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   
> 
> La questione dello swap invece dipende dalla "pressione" in memoria primaria tra memoria effettivamente usata e memoria cached. Se la pressione è alta e quindi la difficoltà di deallocazione di spazio obsoleto per allocare nuova memoria utile aumenta, il kernel "swappa", ma anche questa azione dovrebbe essere utilizzata il meno possibile.
> 
> Per ridurre la quantità di swap ti consiglio di vedere i numerosi articoli in rete sul valore sysctl vm.swappiness e magari abbassarlo un po' 
> ...

 

Io infatti parlavo di vm.swappiness per ridurre la tendenza del kernel a swap-are, mai parlato del fatto che vm.vfs_cache_pressure e vm.swappiness riducano l'utilizzo di memoria  :Wink: 

 *pierino_89 wrote:*   

>  *loxdegio wrote:*   ed eventualmente valutare l'utilizzo di qualche blocco di ZRAM 
> 
> Dai, con 4GB di ram posso capire l'evitare l'utilizzo di tmpfs, ma chiamare in causa ZRAM mi pare un po' eccessivo 

 

Certo che forse è eccessivo, ma trovo che sia comunque una scelta personale e soprattutto male non fa  :Razz: 

EDIT: Fatte le mie ricerche. Lascio questo link a @mrfabiolo per capire i vari campi di free. Inoltre ammetto di avere detto una cavolata sulla questione della considerazione della memoria cached di free, quindi consiglio di guardare appunto il campo +/- buffers/cache e non il campo used per avere un'effettiva idea del quantitativo di memoria usata

EDIT2: Chiedo venia a @pierino_89: effettivamente credo di essermi espresso male parlando della vm.swappiness utilizzando termini migliori in questo post di replica  :Razz: 

----------

## pierino_89

 *loxdegio wrote:*   

> 
> 
> Io infatti parlavo di vm.swappiness per ridurre la tendenza del kernel a swap-are, mai parlato del fatto che vm.vfs_cache_pressure e vm.swappiness riducano l'utilizzo di memoria 

 

Vero. Però dalla situazione mi pare che lo swap avvenga più per necessità che per politica del kernel, e diminuire la swappiness in questi casi per quanto assurdo possa sembrare peggiora ulteriormente la situazione - se ho 4 GB di ram e la memoria occupata è 4 GB, con swappiness a 50 il sistema è più lento in generale ma ha ancora ram libera (perché ha già spostato su disco le pagine meno utilizzate); un sistema con swappiness a 0 quando arriva a 4 GB non ha ram libera e rimane completamente inchiodato.

Per fortuna possiamo fare un test semplicissimo per escludere i problemi di cache:

```
sync; echo 3 > /proc/sys/vm/drop_caches
```

Eliminando la cache forzatamente, dovrebbe essere più facile esaminare l'utilizzo effettivo di memoria.

Comunque credo che siano necessari altri dati per capire bene la questione (altrimenti possiamo fare ipotesi fino a notte fonda   :Very Happy:  ), il system monitor è sicuramente ottimo per identificare i processi più esosi, ed ora che ci penso anche controllare se ci sono mount in tmpfs potrebbe essere un'idea.

----------

## loxdegio

Non posso dirti che non hai ragione, ma ti ricordo che l'area di SWAP sta su HD, mentre il resto della memoria sta in RAM. Da qui sorge spontanea una domanda: è meglio usare più massicciamente la RAM (per quanto piena) oppure l'HD?

Ti lascio rispondere da te  :Wink: 

----------

## lollix01

Anche Io ho questo problema su Gentoo Ram e CPU soffrono con Gentoo!!! Xorg secondo me andrebbe sostituito, consuma tantissimo!!! Firefox è alla versione 24, la versione più rognosa di Firefox e il Kernel 3,12 mi ha sempre dato problemi! È lentissimo!!! Comunque ho noato che sul mio Xfce la Ram si riempie e la CPU prende fuoco quando esco da xscreensaver.

Hello!                                       :Smile: 

----------

## sabayonino

 *lollix01 wrote:*   

> Anche Io ho questo problema su Gentoo Ram e CPU soffrono con Gentoo!!! Xorg secondo me andrebbe sostituito, consuma tantissimo!!! Firefox è alla versione 24, la versione più rognosa di Firefox e il Kernel 3,12 mi ha sempre dato problemi! È lentissimo!!! Comunque ho noato che sul mio Xfce la Ram si riempie e la CPU prende fuoco quando esco da xscreensaver.
> 
> Hello!                                      

 

https://forums.gentoo.org/viewtopic-t-993206-highlight-.html

buona lettura

----------

