Page 2 of 8

Posted: Mon May 23, 2005 9:34 am
by FonderiaDigitale
randomaze wrote:Spettacolare :-D


Noto che tuttavia le dimensioni da specificare in PORTAGE_MEMSIZE sono infide... infatti a quanto pare un 512 non é sufficiente per xorg-x11 infatti dopo i primi tentativi andati bene mi sono esaltato é ho lanciato un:

Code: Select all

 PORTAGE_MEMSIZE=512 emerge xorg-x11
ottenendo come risultato:

Code: Select all

gzip: stdout: No space left on device
...adesso riprovo con 700.

Potremmo fare una tabellina con le dimensioni consigliate per i vari pacchetti ;-)

Ricordo male oppure openoffice per compilare richiede circa 4/5Gb di spazio?
molto strano.. finita la ram dovrebbe passare alla swap. hai swap o swapfiles?
per la tabella si puo' fare anche un /etc/portage/package.mem e ficcare tutto li

Posted: Mon May 23, 2005 9:45 am
by gutter
randomaze wrote: Ricordo male oppure openoffice per compilare richiede circa 4/5Gb di spazio?
Ricordi benissimo ;)

Posted: Mon May 23, 2005 9:48 am
by randomaze
FonderiaDigitale wrote:molto strano.. finita la ram dovrebbe passare alla swap. hai swap o swapfiles?
per la tabella si puo' fare anche un /etc/portage/package.mem e ficcare tutto li

Code: Select all

 $ free
             total       used       free     shared    buffers     cached
Mem:        774524     730744      43780          0         20     536092
-/+ buffers/cache:     194632     579892
Swap:      1502036          0    1502036
Sei sicuro che finita la dimensione del disco passa allo swap? Perché mi sa che la dimensione del disco é fissa, ovvero 700M, poi il passaggio allo swap avviene se necessario (ad esempio se creo 1G di tempfs sicuramente un tot viene gestita dallo swap, se invece lo creo di 400 viene swappata solo se le app corenti si prendono troppo).

(BTW adesso sta swappando)

Code: Select all

 $ free
             total       used       free     shared    buffers     cached
Mem:        774524     771660       2864          0          0     453072
-/+ buffers/cache:     318588     455936
Swap:      1502036     227192    1274844
 $ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc7             12849728   9905316   2944412  78% /
none                    387260         0    387260   0% /dev/shm
/dev/hdc2             22351536  15786960   6564576  71% /mnt/WinXP
tmpfs                   716800    626412     90388  88% /var/tmp/portage
EDIT: Anche 700 sono finiti e non é riuscito....

Code: Select all

ranlib: /var/tmp/portage/xorg-x11-6.8.2-r1/image//usr/lib/libXau.a: No space left on device
...
$ df
...
tmpfs                   716800    716800         0 100% /var/tmp/portage
$ free
             total       used       free     shared    buffers     cached
Mem:        774524     760856      13668          0          0     459384
-/+ buffers/cache:     301472     473052
Swap:      1502036     316212    1185824

Posted: Mon May 23, 2005 9:51 am
by Cazzantonio
BELLISSIMO! :D
Grande Fonderia!!! :D

Un solo dubbio mi assale... quanto ramdisk dedicare alla compilazione? :?
non ho mai fatto statistiche su quanto spazio venga occupato...
inoltre, usare la use kdeenablefinal può essere problematico? :?

Posted: Mon May 23, 2005 9:53 am
by xchris

Code: Select all


root@lyra xchris # lsof|grep /var/tmp/portage
gconfd-2   7085    root   11u     unix 0xc2f48d80             6326053 /var/tmp/portage/mozilla-1.7.8/temp/orbit-root/linc-1bad-0-5b5fb322da9b4
gconfd-2   7085    root   12wW     REG       0,13      737    6326057 /var/tmp/portage/mozilla-1.7.8/temp/gconfd-root/lock/0t1116837445ut895646u0p7085r1428852984k3220905676 (deleted)
tieni conto che era un emere -Du world

ciao :)

Posted: Mon May 23, 2005 9:57 am
by Cazzantonio
Un particolare...
io ho
PORTAGE_TMPDIR=/var/portage_tmp

devo decommentare questa riga in make.conf per usare il ramdisk?

Posted: Mon May 23, 2005 10:07 am
by FonderiaDigitale
randomaze wrote: Sei sicuro che finita la dimensione del disco passa allo swap? Perché mi sa che la dimensione del disco é fissa, ovvero 700M, poi il passaggio allo swap avviene se necessario (ad esempio se creo 1G di tempfs sicuramente un tot viene gestita dallo swap, se invece lo creo di 400 viene swappata solo se le app corenti si prendono troppo).
non mi sono spiegato: non c'e modo di montare, ad es., 400MB e forzare 200mb in ram e 200 in swap, solo se la memoria fisica si esaurisce (ovvero: memoria fisica disponibile < memoria mancante al disco tmpfs) il sistema passa allo swap.
L'unica maniera decente (o quasi..) di usare un fs piu grosso della ram e swappare il resto, preservando la priorita' di allocazione della ram per X etc, e' di montare il disco con un nice + alto degli altri processi.. anche se non e' un modo efficacissimo per farlo.
Ricordate che in ogni caso, e questo lo sottolineo 10 volte, tmpfs non togliera' mai memoria ai processi interattivi o allo scheduler di sistema[/b]. inoltre, la memoria se non viene occupata viene liberata per altri usi, ed e' anchequesto il motivo per cui smonto il disco alla fine del merge, ottenendo anche l'effetto secondario di ripulire in un colpo di spugna tutti i file temporanei rimanenti (tipo autoclean :P)
A temporary file system uses memory to simulate a traditional disk partition. Normal file system writes are scheduled to be written to disk along with access control information, but the files actually reside in memory only.

A good candidate for a tmpfs is a partition that will have many small files that will be accessed often, e.g. /tmp. This will considerably speed up their access time. Tmpfs files and directories are NOT saved when the system shuts down.

Tmpfs is recommended for systems that do a lot of compiling and loading of programs and have large amounts of memory (> 16 MB) and swap space.

Disadvantages are that it reduces the amount of swap space available for other process and that it is volatile.

Posted: Mon May 23, 2005 10:08 am
by FonderiaDigitale
Cazzantonio wrote:Un particolare...
io ho
PORTAGE_TMPDIR=/var/portage_tmp

devo decommentare questa riga in make.conf per usare il ramdisk?
no funziona con qualsiasi locazione, purche sia montabile.

Posted: Mon May 23, 2005 10:11 am
by FonderiaDigitale
FonderiaDigitale wrote:
randomaze wrote: Sei sicuro che finita la dimensione del disco passa allo swap? Perché mi sa che la dimensione del disco é fissa, ovvero 700M, poi il passaggio allo swap avviene se necessario (ad esempio se creo 1G di tempfs sicuramente un tot viene gestita dallo swap, se invece lo creo di 400 viene swappata solo se le app corenti si prendono troppo).
non mi sono spiegato: non c'e modo di montare, ad es., 400MB e forzare 200mb in ram e 200 in swap, solo se la memoria fisica si esaurisce (ovvero: memoria fisica disponibile < memoria mancante al disco tmpfs) il sistema passa allo swap.
L'unica maniera decente (o quasi..) di usare un fs piu grosso della ram e swappare il resto, preservando la priorita' di allocazione della ram per X etc, e' di montare il disco con un nice + alto degli altri processi.. anche se non e' un modo efficacissimo per farlo.
Ricordate che in ogni caso, e questo lo sottolineo 10 volte, tmpfs non togliera' mai memoria ai processi interattivi o allo scheduler di sistema. inoltre, la memoria se non viene occupata viene liberata per altri usi, ed e' anchequesto il motivo per cui smonto il disco alla fine del merge, ottenendo anche l'effetto secondario di ripulire in un colpo di spugna tutti i file temporanei rimanenti (tipo autoclean :P)
A temporary file system uses memory to simulate a traditional disk partition. Normal file system writes are scheduled to be written to disk along with access control information, but the files actually reside in memory only.

A good candidate for a tmpfs is a partition that will have many small files that will be accessed often, e.g. /tmp. This will considerably speed up their access time. Tmpfs files and directories are NOT saved when the system shuts down.

Tmpfs is recommended for systems that do a lot of compiling and loading of programs and have large amounts of memory (> 16 MB) and swap space.

Disadvantages are that it reduces the amount of swap space available for other process and that it is volatile.

Posted: Mon May 23, 2005 11:30 am
by randomaze
FonderiaDigitale wrote:non mi sono spiegato: non c'e modo di montare, ad es., 400MB e forzare 200mb in ram e 200 in swap, solo se la memoria fisica si esaurisce (ovvero: memoria fisica disponibile < memoria mancante al disco tmpfs) il sistema passa allo swap.
L'unica maniera decente (o quasi..) di usare un fs piu grosso della ram e swappare il resto, preservando la priorita' di allocazione della ram per X etc, e' di montare il disco con un nice + alto degli altri processi.. anche se non e' un modo efficacissimo per farlo.
Si, mi sa che mi sono espresso male io...

Dato che, dal mio punto di vista con un disco allocato da 512M l'errore "no space left.." significava banalmente che dovevo creare un file più grosso la tua risposta:

Code: Select all

molto strano.. finita la ram dovrebbe passare alla swap. hai swap o swapfiles? 
mi ha lasciato un'attimo perplesso perché pensavo intendessi "finiti i 512M dovrebbe andare sullo swap" e la cosa mi sembrava un poco strana.

Posted: Mon May 23, 2005 11:41 am
by FonderiaDigitale
ok :) ora cmq e' piu' chiaro?

Posted: Mon May 23, 2005 2:49 pm
by XstefanoX
Scusate una domanda, ma non sarebbe più semplice aggiungere ad fstab una linea del tipo:

Code: Select all

none     /tmp     tmpfs     size=800m     0 0
così si eviterebbe di montare/smontare la partizione ad ogni emerge? Tanto, in questo modo, anche se non emergo niente, mi pare di aver capito che di ram non ne consumo, o sbaglio?

Posted: Mon May 23, 2005 4:30 pm
by Xet
XstefanoX wrote:Scusate una domanda, ma non sarebbe più semplice aggiungere ad fstab una linea del tipo:

Code: Select all

none     /tmp     tmpfs     size=800m     0 0
così si eviterebbe di montare/smontare la partizione ad ogni emerge? Tanto, in questo modo, anche se non emergo niente, mi pare di aver capito che di ram non ne consumo, o sbaglio?
beh mi pare eccessivo...tieni conto che è un fs temporaneo...
e poi se monti 800m in ram per non farci nulla ti giochi quegli 800 mega di ram che restano inutilizzati...

se invece li monti per usarli allora ottieni dei risultati :)

sempre che io abbia capito tutto perfettamente ;)

Posted: Mon May 23, 2005 4:47 pm
by XstefanoX
Non credo che la ram venga allocata tutta quando monti il tmpfs. Questa è la situazione iniziale:

Code: Select all

             total       used       free     shared    buffers     cached
Mem:        386652     251232     135420          0      37292     132168
-/+ buffers/cache:      81772     304880
Swap:       497972          0     497972
Poi monto un tmpfs così:

Code: Select all

mount -t tmpfs none /var/tmp/portage -o size=1g
E la ram utilizzata praticamente non cambia:

Code: Select all

             total       used       free     shared    buffers     cached
Mem:        386652     251848     134804          0      37528     132336
-/+ buffers/cache:      81984     304668
Swap:       497972          0     497972
Questo è l'output di df -h:

Code: Select all

Filesystem         Dimens. Usati Disp. Uso% Montato su
none                  1,0G     0  1,0G   0% /var/tmp/portage
Quindi, perchè non montare sempre al boot il tmpfs?

Posted: Mon May 23, 2005 5:24 pm
by federico
Com'e' che tutti sui pacchetti piccoli hanno guadagnato manciate di secondi e io su nano ci perdo ?

senza:

real 0m41.751s
user 0m29.496s
sys 0m8.500s


con:
real 0m42.553s
user 0m29.194s
sys 0m8.298s

Posted: Mon May 23, 2005 5:54 pm
by jp10hp
beh per una volta voglio fare il criticone, ecco i mie risultati prima con e poi senza lo script per la compilazione in ram!

Code: Select all

     Mon May 23 19:42:56 2005 >>> media-video/vlc-0.8.1-r1
       merge time: 2 minutes and 53 seconds.

     Mon May 23 19:47:11 2005 >>> media-video/vlc-0.8.1-r1
       merge time: 2 minutes and 51 seconds.
ovviamente nelle stesse condizioni...
devo però precisare che io uso questa features di portage che forse genera di suo il boost che dovrebbe essere associato alla compilazione in ram:

Code: Select all

# PORTAGE_TMPFS is a location where portage may create temporary files.
#     If specified, portage will use this directory whenever possible
#     for all rapid operations such as lockfiles and transient data.
#     It is _highly_ recommended that this be a tmpfs or ramdisk. Do not
#     set this to anything that does not give a significant performance
#     enhancement and proper FS compliance for locks and read/write.
#     /dev/shm is a glibc mandated tmpfs, and should be a reasonable
#     setting for all linux kernel+glibc based systems.
PORTAGE_TMPFS="/dev/shm"
cmq non so, aspetto illuminazioni!:D

Posted: Mon May 23, 2005 6:01 pm
by .:chrome:.
jp10hp wrote:

Code: Select all

# PORTAGE_TMPFS is a location where portage may create temporary files.
#     If specified, portage will use this directory whenever possible
#     for all rapid operations such as lockfiles and transient data.
#     It is _highly_ recommended that this be a tmpfs or ramdisk. Do not
#     set this to anything that does not give a significant performance
#     enhancement and proper FS compliance for locks and read/write.
#     /dev/shm is a glibc mandated tmpfs, and should be a reasonable
#     setting for all linux kernel+glibc based systems.
PORTAGE_TMPFS="/dev/shm"
infatti... ci pensavo proprio oggi.
sarebbe interessante usare /dev/shm, ma in tutta onestà io so che esiste, ma non so bene a cosa serve, quindi il dubbio era sulla sua reale utilizzabilità.
se non saltano fuori critiche, jp10hp mi ha dato indirettamente la risposta

Posted: Mon May 23, 2005 6:55 pm
by Cazzantonio
k.gothmog wrote:sarebbe interessante usare /dev/shm, ma in tutta onestà io so che esiste, ma non so bene a cosa serve, quindi il dubbio era sulla sua reale utilizzabilità.
beh... in ogni caso è un ramdisk...

Code: Select all

none                    /dev/shm        tmpfs           defaults                0 0
quindi che problemi potrebbero esserci? (se non finire la ram sul più bello della compilazione :D )
Forse il fatto che non viene smontato (e quindi ripulito) dopo che la compilazione è finita? :roll:

Posted: Mon May 23, 2005 10:36 pm
by FonderiaDigitale
XstefanoX wrote:Scusate una domanda, ma non sarebbe più semplice aggiungere ad fstab una linea del tipo:

Code: Select all

none     /tmp     tmpfs     size=800m     0 0
così si eviterebbe di montare/smontare la partizione ad ogni emerge? Tanto, in questo modo, anche se non emergo niente, mi pare di aver capito che di ram non ne consumo, o sbaglio?
il motivo primario per cui smonto e rimonto il fs a ogni emerge e' che in questo modo pulisco tutto il disco in un colpo solo, facendo lavorare anche meno il disco.

Posted: Mon May 23, 2005 10:39 pm
by FonderiaDigitale
jp10hp wrote:beh per una volta voglio fare il criticone, ecco i mie risultati prima con e poi senza lo script per la compilazione in ram!

Code: Select all

     Mon May 23 19:42:56 2005 >>> media-video/vlc-0.8.1-r1
       merge time: 2 minutes and 53 seconds.

     Mon May 23 19:47:11 2005 >>> media-video/vlc-0.8.1-r1
       merge time: 2 minutes and 51 seconds.
stai usando ccache?

Code: Select all

# PORTAGE_TMPFS is a location where portage may create temporary files.
#     If specified, portage will use this directory whenever possible
#     for all rapid operations such as lockfiles and transient data.
#     It is _highly_ recommended that this be a tmpfs or ramdisk. Do not
#     set this to anything that does not give a significant performance
#     enhancement and proper FS compliance for locks and read/write.
#     /dev/shm is a glibc mandated tmpfs, and should be a reasonable
#     setting for all linux kernel+glibc based systems.
PORTAGE_TMPFS="/dev/shm"
cmq non so, aspetto illuminazioni!:D
non e' la stessa cosa. il mio approccio compila TUTTO in memoria, non solo i file temporanei. si tratta di due approcci diversi: a ognuno usare quello che preferisce.

un'altra cosa: se hai un urgente bisogno di memoria, col mio sistema puoi disabilitare in toto, temporaneamnete, l'uso di memoria fisica (es. stai lavorando su un progetto java e quella memoria ti serve per lo scopo). l'altro appoccio e' una-tantum.

Posted: Mon May 23, 2005 10:48 pm
by FonderiaDigitale
federico wrote:Com'e' che tutti sui pacchetti piccoli hanno guadagnato manciate di secondi e io su nano ci perdo ?

senza:

real 0m41.751s
user 0m29.496s
sys 0m8.500s


con:
real 0m42.553s
user 0m29.194s
sys 0m8.298s
avevi la ram occupata per altri processi quando hai fatto la prova?

Posted: Mon May 23, 2005 11:12 pm
by _Hadakaar
Scusate l'ignoranza, ma da dove si inseriscono nel kernel il tmpfs? non l'ho trovato in File Systems.

Posted: Tue May 24, 2005 1:23 am
by federico
FonderiaDigitale wrote:
federico wrote:Com'e' che tutti sui pacchetti piccoli hanno guadagnato manciate di secondi e io su nano ci perdo ?

senza:

real 0m41.751s
user 0m29.496s
sys 0m8.500s


con:
real 0m42.553s
user 0m29.194s
sys 0m8.298s
avevi la ram occupata per altri processi quando hai fatto la prova?
Stavo utilizzando il pc penso normalmente, controllo meglio domani con + precisione forse e' meglio fare una riprova.

Posted: Tue May 24, 2005 6:26 am
by gutter
_Hadakaar wrote:Scusate l'ignoranza, ma da dove si inseriscono nel kernel il tmpfs? non l'ho trovato in File Systems.

Code: Select all

File systems
       Pseudo filesystems
          [V] Virtual memory file system support (former shm fs) (TMPFS)

Posted: Tue May 24, 2005 9:53 am
by _Hadakaar
fatto e funziona, grazie ;)

Purtroppo però è andato in errore un pacchetto (gstreamer-ffmpeg), e non mi smonta più il tmpfs.

Code: Select all

umount2: Dispositivo o risorsa occupata
umount: tmpfs: non trovato
umount: /var/tmp/portage: Illegal seek
umount2: Dispositivo o risorsa occupata
umount: /var/tmp/portage: device occupato
ho anche provato

Code: Select all

 lsof | grep mount
ma l'outpit è vuoto

tra l'altro Firefox non compila....errore moooooolto grave

Code: Select all

i686-pc-linux-gnu-gcc -o Linux2.6_x86_glibc_PTH_OPT.OBJ/pcertdb.o -c -O2 -fPIC -DLINUX1_2 -Di386 -D_XOPEN_SOURCE -DLINUX2_1 -ansi  -pipe -DLINUX -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DHAVE_STRERROR -DXP_UNIX -DSHLIB_SUFFIX=\"so\" -DSHLIB_PREFIX=\"lib\" -DSOFTOKEN_LIB_NAME=\"libsoftokn3.so\" -UDEBUG -DNDEBUG -D_REENTRANT -I/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/dist/include  -I../../../../dist/public/nss -I../../../../dist/private/nss -I../../../../dist/include -I/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/dist/include/nspr -I/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/dist/include/dbm -I../../../../dist/public/dbm  pcertdb.c
{standard input}: Assembler messages:
{standard input}:1808: Error: bad register name `%ea8'
gmake[4]: *** [Linux2.6_x86_glibc_PTH_OPT.OBJ/pcertdb.o] Error 1
gmake[4]: Leaving directory `/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/security/nss/lib/softoken'
gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory `/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/security/nss/lib'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla/security/manager'
gmake[1]: *** [tier_40] Error 2
gmake[1]: Leaving directory `/var/tmp/portage/mozilla-firefox-1.0.4/work/mozilla'
make: *** [default] Error 2