# [DISCUSSIONE ] - filesystem

## xxchris

Oggi dopo una discussione con Gutter via skype ho deciso di fare qualche piccola prova con alcuni filesystem.

Ho preso in considerazione ext2,ext3,xfs,reiserfs(3),jfs

Non ho considerato reiserfs4 per 2 motivi. (il mio kernel,immaturita' IMHO!!!!)

I test di certo non si possono considerare un granche'.

Avrei potuto usare bonnie...ma per il momento i test condotti sono stati semplicissimi.

Copiare /usr/portage

Come ben sappiamo e' pieno di piccoli file!

```

find /usr/portage/ | wc -l

101870

```

Credo che nella norma il nostro bel pinguino lavori con piccoli file,soprattutto gentoo che compila come una dannata  :Laughing: 

Come ho fatto i test?

la mia root e' su disco  scsi UW320 (e quindi anche /usr/portage)

il disco target e' un IDE neanche molto performante.

Quindi i test sono stai condotti copiando e rimuovendo /usr/portage.

```

time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

```

Ho preferito includere il mount e l'unmount per essere sicuro che i dati venissero scritti realmente su HD

ok ora i risultati:

```

---------------- ext2

root@lyra root # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    0m41.015s

user    0m0.711s

sys     0m6.865s

root@lyra root # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/ -r && umount /mnt/test/`

real    0m32.430s

user    0m0.202s

sys     0m2.374s

---------------- fine ext2

---------------- ext3

root@lyra root # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    1m1.679s

user    0m0.701s

sys     0m9.113s

root@lyra root # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

real    0m35.740s

user    0m0.188s

sys     0m3.995s

---------------- fine xt3

---------------- xfs

root@lyra root # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    1m18.207s

user    0m0.881s

sys     0m16.320s

root@lyra root # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

real    1m19.890s

user    0m0.276s

sys     0m8.842s

---------------- fine xfs

---------------- reiser3

root@lyra root # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    0m25.206s

user    0m0.708s

sys     0m15.423s

root@lyra root # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

real    0m21.272s

user    0m0.238s

sys     0m8.394s

---------------- fine reiser3

---------------- jfs

root@lyra root # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    2m4.506s

user    0m0.793s

sys     0m8.821s

root@lyra root # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

real    1m43.252s

user    0m0.224s

sys     0m2.763s

---------------- fine jfs

EDIT:Aggiunto

---------------- reiser4

root@lyra xchris # time `mount /dev/hda3 /mnt/test/ && cp /usr/portage/ /mnt/test/ -rp && umount /mnt/test/`

real    0m24.080s

user    0m0.760s

sys     0m14.258s

root@lyra xchris # time `mount /dev/hda3 /mnt/test/ && rm /mnt/test/* -r && umount /mnt/test/`

real    0m23.279s

user    0m0.284s

sys     0m15.366s

---------------- fine reiser4

```

ultimo test fatto:

montare /var/tmp/portage su /dev/hda3

emerge lopster: 43s sia con reiserfs che con ext3

Probabilmente il collo di bottiglia non e' il fs! (peccato...speravo di rubare un po' di tempo mettendo su /var/tmp/portage un fs veloce...anche se meno sicuro)

Commenti?

----------

## gutter

IMHO questo test privilegia reiserfs, dal momento che riesce a gestire meglio i file di piccole dimensioni. L'unico test che aggiungerei e quello di copiare un file di 2GB.

@xchris: gutter si scrive con lettera iniziale minuscola   :Wink: 

----------

## xchris

ahem... scusa per il nick  :Smile: 

diciamo che e' nella norma lavorare con file piccoli. (situazione standard)

Chiaro che se poi uno lavora con filmati,immagini il discorso cambia  :Smile: 

magari provero' + avanti

ciao

----------

## motaboy

Hai lasciato indietro proprio il migliore...

----------

## xchris

di cosa parli? reiser4?

purtroppo (o forse no) il mio kernel non lo ha...

per i miei gusti e' immaturo ancora...IMHO IMHO!  :Smile: 

magari butto su un nitro (scelta accettabile?) e provo.

ciao

----------

## motaboy

Io mi fido cosi tanto che tutte le mie partizioni a parte la home (non ho tempo di spostarla visto che é di soli 20 GB) sono reiser4.

----------

## xchris

questione di gusti  :Smile: 

sono rimasto scottato in passato da reiser...

...non vorrei ripetere  :Smile: 

Chiaramente ognuno usa quello che preferisce  :Wink: 

ciao

EDIT:mi consigli un kernel che supporti reiser4 senza problemi?(link magari  :Smile: ) vorrei provare il test

----------

## randomaze

 *xchris wrote:*   

> diciamo che e' nella norma lavorare con file piccoli. (situazione standard)

 

Si e no... in realtà dovresti definire "piccoli" dato che gli ebuild sono veramente piccoli.

Sul Reiser4 ti do abbastanza ragione, l'unico campo in cui lo userei al momento sono proprio le directory di portage (esclusa /var/db  :Rolling Eyes:  )

----------

## motaboy

Io sto ancora usando il 2.6.9_rc1-mm2.

----------

## xchris

 *randomaze wrote:*   

> 
> 
> Si e no... in realtà dovresti definire "piccoli" dato che gli ebuild sono veramente piccoli.
> 
> 

 

si effettivamente gli ebuild sono proprio piccoli.

Magari rifaccio quando ho su anche reiser4 i test con bonnie.

ciao

----------

## xchris

messo 2.6.9-rc3-nitro2.

compilato con supporto per reiser4 come modulo (per fortuna)

inziato il primo test...

mentre smontavo la partizione ecco che mi esce un bel

SEGMENTATION FAULT!!!

poco dopo freeze totale della macchina!   :Shocked: 

Premessa: e' una macchina ottima con ottima ram,accesa 24h/24h senza nessun problema.Nessun fs mi ha mai fatto questo scherzo.

Ipotesi:

1 ho preso un kernel sbagliato

2 e' un fs veramente immaturo

3 sono sfigato^99

BTW, al reboot il vecchio e vetusto ext3 si e' ripreso senza problemi.

Questo e' il mio approccio con reiser4.

Prima,unica,ultima (a breve tempo) esperienza con reiser&co.

LUNGI DA ME SCATENARE FLAME!

E' SOLO QUELLO CHE MI E' SUCCESSO.

chiaramente non posso continuare il test :S

----------

## motaboy

Probabilmente hai preso un kernel sbagliato. Gli unici che devono essere usati con reiser4 sono gli mm. sono giá anche troppo patchati loro, se poi ce ne aggiuingi anche delle altre...

----------

## xchris

ok.

Provo gli mm.

vediamo un po'...

----------

## xchris

ok ... con gli mm non mi va in segfault.

I test pero' non sono un granche' rispetto reiser3.

Mi sorge il dubbio che ci sia un collo altrove.

In teoria si potrebbe pensare al fs della dir /usr/portage (che e' ext3)

e' anche vero che ormai era tutto cacheato...

mi sa' che passero' a dei test con bonnie.

ciao

----------

## motaboy

prova a fare un "emerge search"...

----------

## xchris

Non credo sia un buon test per diversi motivi.

1 La mia root e' su UWSCSI320 con ext3

   reiser4 e' su ide-uma100

2 la cache

Reiser4

emerge -s alsa

....

real    0m1.667s

user    0m1.373s

sys     0m0.283s

Ext3

emerge -s alsa

.....

real    0m1.581s

user    0m1.336s

sys     0m0.232s

Credo che questi risultati non significhino molto.

Non sento neanche l'hd frullare un po'  :Smile: 

Mi affidero' a bonnie

ciao

----------

## fedeliallalinea

Prova a lanciare un emerge -S

----------

## randomaze

 *xchris wrote:*   

> Non credo sia un buon test per diversi motivi.
> 
> 1 La mia root e' su UWSCSI320 con ext3
> 
>    reiser4 e' su ide-uma100
> ...

 

Concordo, le situazioni sono troppo differenti... quel tipo di prova ha quasi senso se le partizioni sono sullo stesso disco....

EDIT: Aggiunto il "quasi" dopo che mi ha cazziato motaboy  :Razz: 

----------

## motaboy

qualsiasi test ha senso se la partizione é la STESSA.

----------

## motaboy

Anzi adesso che ci penso, i test non hanno nessun senso...   :Laughing: 

----------

## xchris

bhe.. anche la vita a volte non ha senso  :Very Happy:   :Laughing: 

ocio che non finiamo +  :Laughing: 

ciao

----------

## xchris

vediamo se questo testino puo' dare qc risultato...

```

#!/bin/bash

mount /dev/hda3 /mnt/test

dd if=/dev/urandom of=/mnt/test/1 count=400k

umount /mnt/test && mount /dev/hda3 /mnt/test

cp /mnt/test/1 /mnt/test/2

umount /mnt/test && mount /dev/hda3 /mnt/test

rm /mnt/test/*

umount /mnt/test

```

continuo a montare e smontare per essere sicuro che i dati siano salvati!

risultati:

ext2    -->1m1.157s

ext3    -->0m59.891s

reiser3-->1m3.828s

reiser4-->1m14.052s

xfs      -->0m58.801s

jfs       -->0m58.196s

ok.

i risultati sono ribaltati.

File grossini reiser e' + lento (mi pare fosse gia' nota come cosa)

bhe per oggi basta test!

se qc ha voglia di scrivere uno scrippettino + sensato... lo testo poi.

ciao

----------

## Benve

Penso che questi siano test che non danno una reale percezione delle prestazioni.

Un bel test sarebbe montare /var/tmp/portage con vari filesystem e calcolare i tempi di compilazione.

Se spostiamo in un solo comando grandi quantità di file piccoli o file grandi, non si tiene conto della frammentazione, o della contiguità dei blocchi.

----------

## xchris

si e no..

ho gia' fatto delle prove del genere e ext3 e reiser4 hanno fornito le stesse prestazioni.

Al momento ho provato con "iozone"..

Appena ho un attimo di tempo sistemo e posto i risultati.

ciao

----------

## xchris

per ora ultima prova..

ho una distro residente sulla mia macchina da cui derivare i vari server che poi installo nei vari uffici.

Operazione:

-mkfs.specifico

-copia

-mount

-emerge -f openvpn (tira giu' 3 pacchetti. nasm,lzo,openvp)

-time emerge openvp

```

reiser4  397722

real    1m48.699s

user    1m43.043s

sys     1m8.110s

2nd run - and install

real    1m44.669s

user    1m43.072s

sys     1m8.364s

xfs

real    1m37.502s

user    1m42.923s

sys     0m55.570s

ext2 781756

real    1m33.975s

user    1m43.068s

sys     0m51.383s

ext3 781756 

real    1m35.485s

user    1m42.850s

sys     0m51.956s

jfs

real    1m38.358s

user    1m42.111s

sys     0m53.667s

```

a reiser4 ho dato un'altra opportunita'...visti i risultati inaspettati deludenti.

A questo punto mi sono fatto l'idea che reiser4 sia ottimo con file molto piccoli.

e infatti un "emerge -S ben"

mi ha restituito:

```

ext3

real    0m41.331s

user    0m23.471s

sys     0m6.803s

reiser4

real    0m32.691s

user    0m23.578s

sys     0m9.092s

jfs

real    0m31.820s

user    0m23.005s

sys     0m5.272s

```

una cosa che mi ha realmente stupito e' la dimensione!!

du /mnt/reiser4 

400394

du /mnt/ext3

781968

du /mnt/jfs

742780

impressionante!!!   :Surprised: 

A occhio avere reiser4 non implica migliori tempi di emerge.

Sicuramente velocizza le ricerche e qualunque applicativo che richieda la lettura,scrittura di migliaia di piccoli file.

Ero alla ricerca di un sostituto di ext3.

Per il momento penso non ne valga la pena.

Se parliamo di reiser4 poi...

...devo pregare la madonna ogni volta che metto un kernel nuovo?

mah

tutto IMHO

ciao

----------

## assente

 *xchris wrote:*   

> messo 2.6.9-rc3-nitro2.
> 
> compilato con supporto per reiser4 come modulo (per fortuna)
> 
> inziato il primo test...
> ...

 

Anche a me è successo, ma deve essere un problema deil kernel 2.6.9.. con il 2.6.8-nitro6 nessun problema

----------

## Benve

Possiamo qundi dire che /usr/portage va bene su raiser4, e il resto lo mettiamo su jfs  :Smile: 

----------

## croot

 *Benve wrote:*   

> 
> 
> Se spostiamo in un solo comando grandi quantità di file piccoli o file grandi, non si tiene conto della frammentazione, o della contiguità dei blocchi.

 

mi chiarisci questa affermazione (non è una domanda retorica)?

cioè intendi dire che copiando molti file in un solo colpo questi vengono copiati in aree dell'hd non frammentate ?

----------

## Benve

 *croot wrote:*   

>  *Benve wrote:*   
> 
> Se spostiamo in un solo comando grandi quantità di file piccoli o file grandi, non si tiene conto della frammentazione, o della contiguità dei blocchi. 
> 
> mi chiarisci questa affermazione (non è una domanda retorica)?
> ...

 

Si, la partizione è vuota all'inizio, non è sicuramente frammentata. La frammentazione viene fuori quando si cancellano alcuni file e se ne scrivono altri, invece noi copiamo tutto all'inizio senza cancellare niente. Comunque con la compilazione la frammentazione dovrebbe venire fuori.

----------

## croot

ok avevo capito giusto, anche se la frammentazione su un fs linux è abbastanza contenuta. Poi sui journaled probabilmente lo sarà anche di più.

Vabbè se uno vuole fare un test serie deve tenere conto anche di come è implementata a livello di fs. Quindi hai perfettamente ragione.

----------

