[Samba-it] Velocita` trasferimento file

Simo Sorce simo.sorce at xsec.it
Tue Aug 10 07:43:01 MDT 2004


On Thu, 2004-07-29 at 16:13, Diego Ercolani wrote:
> Il 15:53, giovedì 29 luglio 2004, Francesco Malvezzi ha scritto:
> > > Ho una directory con circa 600 file della dimensione totale di 10MB.
> > > Il trasferimento inizia con una velocità di circa 30 Mb/s, ma dopo
> > > qualche secondo la velocità cala a circa 1Mb/s.
> > > Se invece trasferisco un unico file della dimensione di 10MB tutto fila
> > > liscio.
> >
> > A occhio direi che dipenda dall'algoritmo con cui samba rende
> > compatibili il sistema di nomi di file unix (sensibile alla differenza
> > minuscole/maiuscole) con quello windows (insensibile).
> > All'aumento del numero dei file, aumentano i controlli per evitare una
> > collisione di nomefile. Siccome le combinazioni di lettere
> > minuscole/maiuscole sono davvero tante, la cosa puo' essere davvero lenta.
> > In genere si consiglia di fare un tar, trasferire quello poi fare tar -x.
> >
> > Spero di non essere fuori come un balcone.
> Ci hai beccato in pieno!

No, il drop di performance è troppo elevato.
L'open di un file può richiedere qualche tempo e impatta con un __gran__
numero di file, 600 sono ancora accettabili (fra l'atro samba fa stat
cache quindi l'impatto di performance con pochi file ci dovrebbe essere
solo la prima volta che la dir viene letta).

Prima di balzare a conclusioni si dovrebbe fare un test comparato con
più client (primo fra tutti smbclient).

In genere un drop di performance del genere può essere dovuto a problemi
di rete, ack lenti, congestioni, switch poco buoni etc...

> l'ho scoperto anch'io proprio adesso 
> questo è un discreto problema anche perché è giusto quello che dici che 
> facendo un bel tar file si evitano queste situazioni, non sempre però gli 
> utenti windows sanno che cosa è un tar file o uno zip file.
> La cosa triste è che una share windows sottoposta allo stesso test è 
> enormemente più reattiva, in questo caso un peggiore filesystem sembra 
> funzionare in maniera più efficiente.

NTFS è un buon filesystem ma ha una cosa che samba non ha, è case
preserving, ovvero necessita di un solo lookup per file
indipendentemente dal fatto che essi siano scritti con maiusole o meno.
Comunque non credo sia questo il problema visto che samba al primo colpo
prova il nome come fornito dal richiedente e normalmente windows chiede
il file con il giusto "case" perchè lo ha ottenuto così dal server. Solo
ai tempi di win31/95/98 windows usava API a 16 bit che facevano sempre
uppercase del name prima di chiederlo in formato 8.3

> Mi chiedo, perché con l'opzione case sensitive = no, anziché tentare tutte le 
> combinazioni samba non fa una bella struttura dati con i nomi dei file 
> normalizzati? in modo da potere verificare la cosa in maniera più efficiente?

case sensitive = no è il default vuol dire che samba prova tutte le
combinazioni (non è sensibile al "case").

ma **NON** usate case sensitive = yes sui vostri server, è vero che le
performance possono migliorare per il lookup dei nomi dei file
(tipicamente il browsing è più veloce) ma molte applicazioni possono
fallire perchè se attivato vuol dire che il file pippo.txt e il file
Pippo.txt non sono più la stessa cosa e questo ai client win non piace.

Non possiamo mantenere una cache per troppo tempo perchè samba non
controlla il filesystem e non può sapere se via unix delle cose vengono
cambiate mentre abbiamo tutto in cache. Quindi ad ogni nuova operazione
va riletto più o meno tutto.

Simo.

-- 
Simo Sorce - simo.sorce at xsec.it
Xsec s.r.l. - http://www.xsec.it
via Garofalo, 39 - 20133 - Milano
mobile: +39 329 328 7702
tel. +39 02 2953 4143 - fax: +39 02 700 442 399




More information about the samba-it mailing list