Perché è più lento della metà di un file cp anziché utilizzare la copia della GUI di Nautilus? (Protocollo AFC)


9

Ho un iPod Touch con jailbreak e ho il pacchetto afc2add. Quando lo collego al mio laptop Ubuntu, si monta automaticamente sulla directory Media del mio iPod, così come anche sulle cartelle di condivisione dei file dell'app. Quando utilizzo Nautilus per trasferire un file nella cartella Media, raggiunge un picco di circa 5 MB / s. Tuttavia, quando uso un terminale per copiare un file nella ~/.gvfs/Matt's iPodcartella [In Nautilus, appare come "Matt's iPod"], l'ho visto solo salire a circa 2 MB / s.

Qualcuno può dare qualche indizio sul perché è più lento della metà di un file cp anziché utilizzare la copia della GUI di Nautilus?

A proposito, posso dire quanto sta andando veloce con una copia terminale, ho uno script con pv [In poche parole, è: pv $1 > $2], e che stava andando a circa 1,5 MB / s. Quindi ho anche provato cp, e ho creato un loop per duil file ogni secondo, che è saltato da qualche parte vicino a 2 MB al secondo.


Puoi anche pubblicare i tempi di restituzione totali in entrambi i casi?
samarasa,

Stranamente, il mio caso è esattamente l'opposto: cp è 8 volte più veloce della copia con Nautilus. Ti invidio :)
Marcio

Risposte:


15

Nautilus avrebbe attraversato un minor numero di strati indiretti, il che potrebbe spiegare la differenza.

Nautilus è un'applicazione gvfs nativa, quindi comunica direttamente con i backend gvfs.

Al contrario, cpsta parlando con il kernel tramite un file system FUSE montato su ~/.gvfs, che è gestito dal gvfs-fuse-daemonprocesso, che a sua volta parla con i backend di gvfs. Le discrepanze di impedenza tra l'API POSIX e gvfs potrebbero tenere conto dei trasferimenti meno efficienti.

Potresti essere in grado di ottenere prestazioni simili sulla riga di comando usando il gvfs-copycomando dal gvfs-binpacchetto, copiando l'URL appropriato.


Oh mio Dio. È salito a 11 MB / s per un secondo e in media circa 6 o 7 MB / s in seguito! Grazie!
Matt

1
È una buona notizia. L'interfaccia FUSE per gvfs è intesa più come uno shim di compatibilità con le versioni precedenti che consente a tutte le applicazioni di accedere ai file piuttosto che essere il metodo di accesso preferito.
James Henstridge,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.