View previous topic :: View next topic |
Author |
Message |
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 5:42 pm Post subject: [PORTAGE][TOOL] Emerge in ram/tmpfs: aggiornato a gennaio 06 |
|
|
UPDATE: Ebuild disponibile. vedi sotto.
UPDATE: A distanza di mesi, sotto sollecito di alcune persone, torno ad aggiornare lo script.
- Ho fatto un paio di modifiche documentate sotto.
- Ho risolto un paio di bug riguardo lo smontaggio del fs.
- L'ho riscritto. non sono sicuro che sia apposto, provatelo, ho fatto dei test ma non posso garantire che sia perfetto.
-----------------------------------------------------------------------------------------
Questo tratta di come modificare emerge per automontare la dir temporanea di portage in ram, o nel caso specifico in tmpfs (quindi ram fino alla capacita' massima fisica disponibile, il resto in swap, per essere sicuri di non rimanere a secco).
Compilare in ram, specie per pacchetti molto esosi come gcc o glibc, diminuisce molto ma molto ma molto il tempo necessario.
Senza contare il fatto, molto importante per me, che aumenta anche la vita al vostro disco fisso (credo che la compilazione per un utente gentoo medio, sia uno degli aspetti di piu grosso stress per gli HD).
Il tutto viene fatto e disfatto automaticamente per ogni emerge, da emerge stesso.
L'unica cosa da configurare e' la dimensione, ovvero una variabile da inserire in /etc/make.conf:
Code: | PORTAGE_MEMSIZE=xxx | dove xxx e' la quantita' (in MegaBytes) del disco da creare.
Sono supportate le seguenti sintassi per la misura:
- 60 - 60 megabytes (se non c'e' unita' il default e' megabytes)
- 60M o 60Mb
- 2G o 2Gb
Ovviamente, come ogni altra variabile in make.conf, potete sovrascriverla a runtime ogni volta che emergerete un pacchetto magari molto dispendioso in termini di spazio in compilazione, ad esempio Code: | PORTAGE_MEMSIZE=800M emerge openoffice | per specificare dimensioni eccezionali per casi eccezionali.
-------------
UPDATE:
Ho inserito il supporto per un file, /etc/portage/package.mem, dove si puo' sovrascrivere le impostazioni globali per pacchetto, esattamente come avviene per package.use.
La sintassi corretta per il file e':
Code: |
categoria/pacchetto dimensione_tmpfs |
NOTA BENE: non sono supportati i numeri di versione al momento.
L'ordine di priorita' e' questo, in ordine ascendente da sinistra a destra:
make.conf --> package.mem --> variabile d'ambiente shell
-------------
Se la variabile non e' specificata ne da linea di comando ne nel make.conf, emerge funzionera' come al solito, senza montare il fs.
esempi:
a. disabilitato per default, attivo su richiesta esplicita per singoli pacchetti
- make.conf: PORTAGE_MEMSIZE="" (o nulla direttamente)
- emerge world
oppure
- PORTAGE_MEMSIZE=50 emerge nano
b. attivo per default, inattivo su richiesta esplicita per singoli pacchetti
- make.conf: PORTAGE_MEMSIZE="500" (dimensione a scelta)
- emerge world
oppure
- PORTAGE_MEMSIZE="" emerge nano
c. attivo per default, dimensione per singoli pacchetti diversa da default
- make.conf: PORTAGE_MEMSIZE="500"
- emerge world
oppure
- PORTAGE_MEMSIZE=50 emerge nano
Giustamente qualcuno ha detto che e' poco utile per pacchetti piccoli, specie su macchine non proprio eccellenti.
vero.
A questo proposito puo' essere utile settare PORTAGE_MEMSIZE=0 in /etc/make.conf, e usarlo selettivamente per pacchetti grandi, tipo:
Code: |
nano /etc/portage/package.mem |
Code: |
app-office/openoffice-ximian 2G
kde-base/kdelibs 800M
sys-devel/gcc 500
|
e cosi' via.
NOTA BENE: DOVETE avere il supporto per ramfs/tmpfs nel vostro kernel.
Download: Ebuild disponibile a questo indirizzo.
Per installarlo, dovete inserirlo nel vostro overlay di ebuilds.
--
NOTA BENE: Al momento non e' prevista la gestione di piu processi di emerge concorrenti. La spiegazione e' ovvia: far partire piu emerge contemporaneamente e' gia rischioso di per se, puo' seriamente corrompere portage e il sistema stesso.
il "coso" non ha pretese di essere perfetto, se avete migliorie son ben accette. _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
Last edited by FonderiaDigitale on Sun Jan 29, 2006 5:56 pm; edited 13 times in total |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Sun May 22, 2005 5:58 pm Post subject: |
|
|
I miei complimenti, analisi e soluzione del problema sono davvero degni di nota.
Aggiunto ai post utilissimi sezione Tips. _________________ Registered as User #281564 and Machines #163761
Last edited by gutter on Sun May 22, 2005 6:02 pm; edited 1 time in total |
|
Back to top |
|
|
neryo Veteran
Joined: 09 Oct 2004 Posts: 1292 Location: Ferrara, Italy, Europe
|
Posted: Sun May 22, 2005 5:59 pm Post subject: Re: [PORTAGE][TOOL] modifica per portage: autocompilare in R |
|
|
FonderiaDigitale wrote: |
Compilare in ram, specie per pacchetti molto esosi come gcc o glibc, diminuisce molto ma molto ma molto il tempo necessario.
|
Ottimo tip... lo proverò a breve! _________________ cache: a safe place for hiding or storing things..
D-link DWL-G650 AirPlus
Apache Php Mysql |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Sun May 22, 2005 7:09 pm Post subject: |
|
|
ho seguito le istruzioni giusto per un bell'aggiornamento ma ho un problema:
Code: | >>> emerge (1 of 53) sys-devel/gnuconfig-20050324 to /
* Mounting 700MMb (tmpfs) to /var/tmp/portage...
mount: wrong fs type, bad option, bad superblock on tmpfs,
or too many mounted file systems |
*credo* di avere entrambe le features da te indicate gia' compilate nel kernel. Dico credo perche' non sn riusscito ad individuare nello specifico le voci ma un "mount" mi restituisce
Code: | none on /dev type ramfs (rw)
none on /dev/shm type tmpfs (rw) |
quindi se sono montati dovrei averli...
un emerge info
Code: | Portage 2.0.51.19 (default-linux/amd64/2005.0, gcc-3.4.3, glibc-2.3.4.20041102-r1, 2.6.11-gentoo-r6 x86_64)
=================================================================
System uname: 2.6.11-gentoo-r6 x86_64 AMD Athlon(tm) 64 Processor 3200+
Gentoo Base System version 1.4.16
Python: dev-lang/python-2.3.4-r1 [2.3.4 (#1, Mar 22 2005, 18:23:45)]
distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ccache version 2.3 [enabled]
dev-lang/python: 2.3.4-r1
sys-apps/sandbox: [Not Present]
sys-devel/autoconf: 2.59-r6, 2.13
sys-devel/automake: 1.7.9-r1, 1.8.5-r3, 1.5, 1.4_p6, 1.6.3, 1.9.4
sys-devel/binutils: 2.15.92.0.2-r7
sys-devel/libtool: 1.5.16
virtual/os-headers: 2.6.8.1-r4
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CFLAGS="-O2 -march=athlon64 -pipe -fweb -frename-registers -ftracer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=athlon64 -pipe -fweb -frename-registers -ftracer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms strict"
GENTOO_MIRRORS="http://mirror.switch.ch/mirror/gentoo/"
LDFLAGS="-Wl,-O1"
LINGUAS="it"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X aalib acpi alsa amd64 arts avi berkdb bitmap-fonts crypt cups curl dga dvd dvdr encode fam flac font-server fortran gif gphoto2 gpm gtk imagemagick imlib ipv6 ithreads java jp2 jpeg kde kdeenablefinal lzw lzw-tiff motif mp3 mpeg ncurses nls nptl ogg oggvorbis opengl oss pam pda pdflib perl png python qt quicktime readline samba sdl ssl tcltk tcpd tiff truetype truetype-fonts type1-fonts usb userlocales vorbis xml2 xmms xpm xrandr xv xvid zlib linguas_it userland_GNU kernel_linux elibc_glibc"
Unset: ASFLAGS, CBUILD, CTARGET, LANG, LC_ALL
|
e in make.conf c'e'
Code: | PORTAGE_MEMSIZE=700M |
ho 1 giga... _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31353 Location: here
|
Posted: Sun May 22, 2005 7:22 pm Post subject: |
|
|
Ottimo tip fonderia. Grande _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 7:28 pm Post subject: |
|
|
flocchini wrote: | ho seguito le istruzioni giusto per un bell'aggiornamento ma ho un problema:
Code: | >>> emerge (1 of 53) sys-devel/gnuconfig-20050324 to /
* Mounting 700MMb (tmpfs) to /var/tmp/portage...
mount: wrong fs type, bad option, bad superblock on tmpfs,
or too many mounted file systems |
*credo* di avere entrambe le features da te indicate gia' compilate nel kernel |
colpa mia. avevo detto di aggiungere M ma poi lo ho fatto nello script. ho corretto il primo post
Specifica solo la dimensione _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sun May 22, 2005 7:59 pm Post subject: |
|
|
appena poso le mani sulla mia gentoo box faro' un po' di prove...
sembra molto promettente
denghiu _________________ while True:Gentoo() |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Sun May 22, 2005 8:01 pm Post subject: |
|
|
hahaha mi sento come quando ero a scuola... quando pensi di avere la risposta giusta ma non la dici per paura di fare brutta figura, dando un 'occhiata allo script ci avevo pensato ma avevo paura di fare peggio... Dovro' dare piu' retta al mio sitinto
ora funziona regolarmente, vediamo quanto e' piu' veloce _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
redview Guru
Joined: 18 Feb 2004 Posts: 365 Location: Goteborg - Sweden
|
Posted: Sun May 22, 2005 8:05 pm Post subject: |
|
|
storia malata..nano compilato con 20s di anticipo..
grazie! _________________ our enterprise a success as return is no option/our eyes were removed for our own safety/the distance too great for you to hear our cries/nevermind take this lamp we are beyond light [kinetic-arcturus]
you and I, connect and emerge [we ride-syl] |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 8:07 pm Post subject: |
|
|
beh nano e' un pacchetto piccolo prova con glibc e vedi _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
X-Drum Advocate
Joined: 24 Aug 2003 Posts: 2517 Location: ('Modica','Trieste','Ferrara') Italy
|
Posted: Sun May 22, 2005 8:13 pm Post subject: |
|
|
impressive
veramente bello come hack _________________ "...There are two sort of lies, lies and benchmarks..." |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sun May 22, 2005 8:56 pm Post subject: |
|
|
provato con successo su pacchetti piccoli per ora...
57 secs contro i 71 normali.
Ovviamente non ha molto senso sui pacchetti piccoli... provero' quanto prima su qc di + corposo.
Un suggerimento...
Se non e' settato PORTAGE_MEMSIZE sarebbe meglio non montare nulla.
In questo modo e' completamente trasparente...
(avevo dimenticato di settare la var e mi ha creato un RAMDISK di 0k ... che bloccava qualunque emerge)
(e poi non lo ha neanche smontato... non so perche'... a dire il vero)
Provato in modo corretto ha funzionato alla grande (mount/umount)
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 9:00 pm Post subject: |
|
|
ok, aggiunto il controllo modificato il primo post
EDIT: aggiunto controllo sullo smontaggio del fs, e spostato sul mio server. _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
Last edited by FonderiaDigitale on Sun May 22, 2005 9:34 pm; edited 1 time in total |
|
Back to top |
|
|
Xet Apprentice
Joined: 02 May 2004 Posts: 170
|
Posted: Sun May 22, 2005 9:31 pm Post subject: |
|
|
che bello O_o veramente utile!!!
GJ
ps: aspetto con ansia la parte di script che determina quanta memoria fisica hai ancora libera e monta un fs adeguato
non so la butto li ne...
sarebbe una bella feature secondo voi?
se mi date una mano si può fare...mi serve solo sapere il comando per ottenere info sulla memoria...
azzarderei un
con poi un grep e un passaggio in una variabile...
secondo voi è sensato montare TUTTA la mem rimanente o no?
voglio dire...quella cache montata in ram può essere usata da gcc per compilare o è usata da emerge per gestire le compilazioni?
ok ok ok reddo il fuckin manual... _________________ sono colui che sostiene il reale |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 9:34 pm Post subject: |
|
|
assegnare la quantita' di memoria per emerge non dipende dalla quantita' fisica disponibile ma dallo spazio necessario in compilazione, e non e' una cosa automatizzabile, anche xche la ram che togli al sistema e' ram che potrebbe servire all'uso del pc (in ambito desktop).
Secondo me e' meglio lasciarla settare all'utente in base alle sue esigenze (se vuole o meno rallentare il suo uso quotidiano del sistema o no) _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
Xet Apprentice
Joined: 02 May 2004 Posts: 170
|
Posted: Sun May 22, 2005 9:45 pm Post subject: |
|
|
ho provato, forse per abitudine, a dare:
Code: |
PORTAGE_MEMSIZE="" emerge rdate
|
e mi ha giustamente insultato, facendomi sbattere su un "no space left on device"
inoltre bisogna considerare un minimo spazio per far funzionare?
e sicuramente non può essere 0 (questo l'ho detto ma non ho fatto in tempo a vedere se l'avevi gia previsto) _________________ sono colui che sostiene il reale |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 9:55 pm Post subject: |
|
|
scarica l'ultima versione, c'e quel controllo _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
Xet Apprentice
Joined: 02 May 2004 Posts: 170
|
Posted: Sun May 22, 2005 9:55 pm Post subject: |
|
|
FonderiaDigitale wrote: | assegnare la quantita' di memoria per emerge non dipende dalla quantita' fisica disponibile ma dallo spazio necessario in compilazione, e non e' una cosa automatizzabile, anche xche la ram che togli al sistema e' ram che potrebbe servire all'uso del pc (in ambito desktop). |
beh io pensavo ad un utonto ed era un'idea balenata così a caldo
ok....stanotte il letto mi aspetterà...devo trovare una formula atta allo scopo
magari me la sogno _________________ sono colui che sostiene il reale |
|
Back to top |
|
|
Xet Apprentice
Joined: 02 May 2004 Posts: 170
|
Posted: Sun May 22, 2005 10:14 pm Post subject: |
|
|
Code: |
Ulisse xet # time emerge rdate
Calculating dependencies ...done!
>>> emerge (1 of 1) net-misc/rdate-1.4-r1 to /
[cut]
* GNU info directory index is up-to-date.
real 0m8.624s
user 0m7.094s
sys 0m0.939s
Ulisse xet # time emerge rdate
Calculating dependencies ...done!
>>> emerge (1 of 1) net-misc/rdate-1.4-r1 to /
* Mounting 200Mb (tmpfs) to /var/tmp/portage ...
[cut]
* Unmounting /var/tmp ...
>>> clean: No packages selected for removal.
>>> Auto-cleaning packages ...
>>> No outdated packages were found on your system.
* GNU info directory index is up-to-date.
real 0m12.683s
user 0m10.812s
sys 0m1.284s
|
lol i tempi di mount\umount invalidano il tip per pacchetti di piccolissime dimensioni
cmq io ho scaricato la versione ultima (ATM), ma lanciando con
Code: |
PORTAGE_MEMSIZE=0 emerge rdate
|
non ignora il mount e cerca di emergere con un tmp di 0 mega...
stessa cosa se al posto di 0 c'è ""... _________________ sono colui che sostiene il reale |
|
Back to top |
|
|
gionag n00b
Joined: 01 Mar 2004 Posts: 37
|
Posted: Sun May 22, 2005 10:22 pm Post subject: |
|
|
complimenti è riduttivo ottimo lavoro...
ho solo alcuni dubbi: ho 512mb di memoria fisica, se io specifico nella variabile 700M dopo che ha esaurito la ram va autamaticamente nello swap ? e poi, siccome io ho utilizzato fino ad ora una partizione dedicata e montata su /var/tmp/portage, grazie a questo script è resa praticamente inutile, giusto ?
due piccoli bug: uno l'override del mount in caso di MEMSIZE="0" non funziona e in secondo luogo fa confusione con emerge multipli
grazie
ciao _________________ etc-update, da fare sobri, non oltre le 22 e senza pressioni esterne. .:deadhead:.
Last edited by gionag on Sun May 22, 2005 10:31 pm; edited 1 time in total |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Sun May 22, 2005 10:29 pm Post subject: |
|
|
10 minuti buoni sulle qt, da 51 a 40 su amd64@3200
grande fonderia _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Sun May 22, 2005 11:00 pm Post subject: |
|
|
Xet wrote: |
lol i tempi di mount\umount invalidano il tip per pacchetti di piccolissime dimensioni
|
questo era PALESE. di certo i 3 secondi di nano non ti cambiano la vita, mentre i minuti per kde si.
Quote: |
cmq io ho scaricato la versione ultima (ATM), ma lanciando con
Code: |
PORTAGE_MEMSIZE=0 emerge rdate
|
non ignora il mount e cerca di emergere con un tmp di 0 mega...
stessa cosa se al posto di 0 c'è ""... |
mah: specificare dimensione=0 non e' che abbia molto senso e va contro la modalita' standard di azzerrare le var in bash, ha molto piu senso ="", in ogni caso ho aggiunto anche questo controllo. _________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Mon May 23, 2005 9:02 am Post subject: |
|
|
Code: |
* if you've upgraded from libexif-0.5.8 you'll
* have to run revdep-rebuild from gentoolkit
*
>>> Regenerating /etc/ld.so.cache...
* Caching service dependencies...
>>> media-libs/libexif-0.5.12-r3 merged.
* Unmounting /var/tmp...
umount2: Device or resource busy
umount: /var/tmp/portage: device is busy
umount2: Device or resource busy
umount: /var/tmp/portage: device is busy
|
uhm... come mai non lo smonta? (non ho ancora aggiornato alla versione finale.. ma non credo cambi molto)
Che tipo di test potrei fare? _________________ while True:Gentoo() |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Mon May 23, 2005 9:15 am Post subject: |
|
|
Spettacolare
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: | PORTAGE_MEMSIZE=512 emerge xorg-x11 |
ottenendo come risultato:
Code: | 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? _________________ Ciao da me! |
|
Back to top |
|
|
FonderiaDigitale Veteran
Joined: 06 Nov 2003 Posts: 1710 Location: Rome, Italy
|
Posted: Mon May 23, 2005 9:33 am Post subject: |
|
|
xchris wrote: | Code: |
* if you've upgraded from libexif-0.5.8 you'll
* have to run revdep-rebuild from gentoolkit
*
>>> Regenerating /etc/ld.so.cache...
* Caching service dependencies...
>>> media-libs/libexif-0.5.12-r3 merged.
* Unmounting /var/tmp...
umount2: Device or resource busy
umount: /var/tmp/portage: device is busy
umount2: Device or resource busy
umount: /var/tmp/portage: device is busy
|
uhm... come mai non lo smonta? (non ho ancora aggiornato alla versione finale.. ma non credo cambi molto)
Che tipo di test potrei fare? |
hai qualche job sotppato o screen? prova Code: | lsof|grep mountpoint |
_________________ Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica
|
|
Back to top |
|
|
|