Por que é mais lento para compilar um arquivo em vez de usar a cópia GUI do Nautilus? (Protocolo AFC)

8

Eu tenho um iPod Touch desbloqueado e tenho o pacote afc2add. Quando eu o conecto ao meu laptop ubuntu, ele monta o diretório de mídia do meu iPod, bem como as pastas de compartilhamento de arquivos do aplicativo também. Quando eu uso o Nautilus para transferir um arquivo para a pasta Media, ele atinge um pico de cerca de 5MB / s. No entanto, quando eu uso um terminal para copiar um arquivo para a pasta ~/.gvfs/Matt's iPod [No Nautilus, ele aparece como "iPod do Matt"], eu só o vi subir para cerca de 2MB / s.

Alguém pode dar alguma pista de por que é mais lento para compilar um arquivo em vez de usar a cópia GUI do Nautilus?

A propósito, eu posso dizer o quão rápido ele está indo com uma cópia de terminal, eu tenho um script com pv [Em poucas palavras, é: pv > ], e isso foi por volta de 1.5MB / s. Então eu também tentei o cp, e configurei um loop para du do arquivo a cada segundo, e ele saltou para algum lugar perto de 2 MB a cada segundo.

    
por Matt 08.09.2011 / 03:59

1 resposta

14

Nautilus estaria passando por menos camadas de indireção, o que poderia explicar a diferença.

O Nautilus é uma aplicação gvfs nativa, por isso se comunica diretamente com os backends gvfs.

Por outro lado, cp está falando com o kernel por meio de um sistema de arquivos FUSE montado em ~/.gvfs , que é tratado pelo processo gvfs-fuse-daemon , que por sua vez fala com os backends gvfs. Incompatibilidades de impedância entre a API POSIX e gvfs podem ser responsáveis pelas transferências menos eficientes.

Você pode obter desempenho semelhante na linha de comando usando o comando gvfs-copy do pacote gvfs-bin , copiando para a URL apropriada.

    
por James Henstridge 08.09.2011 / 12:05

Tags