martedì 8 maggio 2007

Slow Food?

Ecco il primo serio bug di Vista: ama lo slow food!

[UPDATE: mercoledi' 9 maggio - A volte Vista ama andare con XP a mangiarsi un Big Mac, per i dettagli guardare sotto]

[UPDATE: venerdi' 11 maggio - Pare che questa hotfix http://support.microsoft.com/kb/931770 sia effettivamente legata al problema descritto, non ci resta che attendere per vedere quando verra' rilasciata al pubblico]

La prima cosa che i nuovi utenti di Vista notano e' la lentezza nella copia dei file. Sia che si stia compiando da disco a disco sullo stesso computer sia che si copi da un computer ad un'altro.

Notano soprattutto che la copia impiega molto tempo ad iniziare, il dialog di copia mostra infatti la progress-bar ferma sotto la scritta "Calculating time remaining..."
Poi una volta iniziata la copia procede a singhiozzo e complessivamente sembra durare molto di piu' di quanto non si fosse abituati ad aspettare sotto XP.

Una prima cosa da sottolienare e' che evidentemente c'e' un baco nell'algoritmo di calcolo del tempo rimanente e nella gestione della progress-bar perche' infatti se si espande il dialog di copia si nota che in realta' il trasferimento del file e' gia' iniziato da un pezzo anche se la progress-bar e' ferma. Nel caso dell'immagine qui a lato dei 2,73 GB sono gia' stati copiati circa 1,4 GB pero' se l'utente non espande il dialog vede solo una finestra di copia che sembra li' ferma a non fare nulla.

Quindi si tratta solo di una sensazione di lentezza dovuta ad un dialog poco comunicativo?
La risposta e' no.
Vista e' quindi sempre piu' lento di XP nella copia dei files?
La risposta e' no.
Quindi?

Quindi le cose sono un po' piu' complesse. Intanto c'e' da dire che Vista di default ha abilitato lo UAC (di cui parlero' prossimamente) che interviene ogni qualvolta si facciano operazioni su disco e nel caso in cui non si sia owner dei file e delle directory coinvolte lo UAC inevitabilmente ci avverte dell'operazione causandone chiaramente un rallentamento.

Disabilitando lo UAC si nota immediatamente una velocizzazione nella copia dei file, pero' disabilitare lo UAC non e' cosa consigliabile (come appunto spieghero').

Una soluzione e' di prendere possesso delle directory su cui si sta lavorando, se ad esempio si usa un disco esterno per backup che era stato usato prima di Vista il suo file system sicuramente e' soggetto ai controlli dello UAC e quindi tutte le operazioni sono rallentate perche' per ogni file vengono controllati i permessi di lettura e scrittura.

Per ovviare a questo basta aggiungere il proprio utente alla lista di owners e le cose tornano ad avere la consueta velocita' a cui eravamo abituati sotto XP.

Cosi' abbiamo risolto il problema della lentezza nella copia da disco a disco sullo stesso computer, resta pero' il problema della copia dei file da un computer ad un altro computer.

Ho provato a copiare lo stesso file da XP a Vista e poi da Vista a XP per fare un confronto diretto del tempo impiegato.

Per un file da circa 800 MB passato da un router a 100 MBit, la copia da XP a Vista ha impiegato circa 1 minuto e 40 secondi e l'andamento del trasferimento e' stato sostanzialmente regolare come ci si poteva aspettare anche se non ha mai sfruttato appieno la larghezza della banda disponibile.

L'andamento del trasferimento da XP risulta sempre identico, lo sottolineo anche se puo' sembrare scontato, ma leggendo piu' avanti si capisce perche' non e' cosi' scontato.


La copia dello stesso file da Vista a XP ha impiegato circa 2 minuti e 40 secondi quindi ben 1 minuto in piu' (pari a circa il 60% in piu') e il Task Manager ha evidenziato uno strano andamento a singhiozzo, come ben si vede nell'immagine a lato, con picchi seguiti da intervalli nei quali non c'e' alcun trasferimento di dati.

Curiosamente pero' l'uso della banda e' piu' efficiente nel senso che i picchi di trasferimento raggiungono il massimo teorico.

Chiaramente l'andamento complessivo e' ben poco logico e lascia pensare che ci sia qualche baco nel codice che gestisce la copia dei files.

Colto dal dubbio ho provato a copiare lo stesso file da Vista (virtual machine sotto XP) a Vista , risultato? 1 minuto e 20 secondi, quindi circa il 20% piu' veloce di XP.

A questo punto ho provato a fare la copia piu' e piu' volte ed ogni volta ho ottenuto risultati lievemente differenti.

Com'e' possibile che copiando lo stesso file tra due computer il grafico del trasferimento non sia costante?

E' dovuto al fatto che Vista adotta un sistema di trasferimento dei file che ha diversi parametri variabili che tengono conto di diversi fattori e in base a questi fattori l'andamento del trasferimento risultera' di volta in volta diverso.

Questo nuovo sistema e' stato sicuramente introdotto con l'obiettivo di rendere piu' efficiente il trasferimento dei file e non penso di sbagliarmi dicendo che e' stato pensato per lavorare in modo ottimale con i file server, pero' c'e' anche sicuramente qualche baco che si evidenzia quando la copia avviene tra due singoli computer.

Resto molto perplesso dal fatto che non sia stato considerato un baco di alta priorita' e che Vista sia stato rilasciato con questa pecca che, anche se non e' uno showstopper (non impedisce certo di trasferire i file), e' senza dubbio un baco grave perche' da' all'utente la sensazione che Vista sia peggio di XP e chi in ambiente lavorativo si trova a dover interagire spesso con altri computer con XP e a dover copiare files sicuramente non fara' i salti di gioia nel dover attendere quasi il doppio del tempo rispetto a prima.

Per completezza: in rete si trovano consigli (uno qui e un'altro qua) su come cercare di ovviare a questa lentezza, li ho provati, con scarsi risultati.

[UPDATE: dopo aver scritto questo post ho fatto degli altri test di copia da Vista a XP e ovviamente le cose si sono ulteriormente complicate.

Veniamo subito al sodo guardando questo nuovo tracciato di trasferimento: e' il massimo ottenibile, piu' di cosi' non si puo' ed e' piu' veloce dei trasferimenti da XP a Vista di un buon 20%. Cosa e' cambiato dalle prove precedenti? E' cambiato il file, questo e' da poco piu' di 700 MB, e la cosa assurda e' che la velocita' di trasferimento sembra cambiare a seconda del file. Ho provato a cambiare estensione per vedere se questo poteva influire, ma cosi' non e' stato. Cosa causi un cambiamento cosi' rimarcato tra un file e l'altro al momento mi e' del tutto ignoto.]

3 commenti:

  1. E un post ottimo, lo abbiamo citato sul blog PuntoDiVista perchè è veramente 'scientifico'. Purtroppo il tentativo di Vista di comprimere i dati in fase di trasferimento deve essere la causa della diversa velocità a pari dimensione con file diversi.

    Ti invito a segnalarci ewventuali altri futuri articoli di questo calibro, se vuoi li possiamo anche ripubblicare.

    Sennò le citiamo, ci piace molto come lavori

    RispondiElimina
  2. > http://bp0.blogger.com/_CE1_b3KCjtE/RkCOU5i39CI/AAAAAAAAACw/bF55prrvfGM/s1600-h/vista-xp-copy.png

    E' la stessa cosa che capita a me quando trasferisco da Vista verso Xp.
    Oltre al grafico "a salti" identico ho proprio le luci dello switch interno al router che si fermano e poi ripartono.
    Lavorano a pieno regime per 10 secondi e poi si rifermano per 2 secondi.
    E cosi via fino a fine trasferimento.

    RispondiElimina