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


9

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

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

By the way, eu posso dizer o quão rápido está indo com uma cópia do terminal, eu tenho um script com pv [Em poucas palavras, é: pv $1 > $2], e que estava indo cerca de 1,5 MB / s. Então, eu também tentei cp e configurei um loop para duo arquivo a cada segundo, e ele saltou para algo em torno de 2 MB a cada segundo.


Também pode publicar o tempo total de entrega em ambos os casos?
samarasa

Estranhamente, meu caso é exatamente o oposto: o cp é 8x mais rápido do que copiar com o Nautilus. Eu invejo você :) #
315 marcio

Respostas:


15

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

O Nautilus é um aplicativo gvfs nativo, portanto ele se comunica diretamente com os backend gvfs.

Por outro lado, cpestá conversando com o kernel por meio de um sistema de arquivos FUSE montado no ~/.gvfs, que é tratado pelo gvfs-fuse-daemonprocesso, que por sua vez conversa com os back-end do gvfs. As incompatibilidades de impedância entre a API POSIX e os gvfs podem ser responsáveis ​​pelas transferências menos eficientes.

Você pode obter desempenho semelhante na linha de comando usando o gvfs-copycomando do gvfs-binpacote, copiando para o URL apropriado.


Ó meu Deus. Subiu 11 MB / s por um segundo e, em média, 6 ou 7 MB / s depois! Obrigado!
Matt

1
Isso é bom de ouvir. A interface do FUSE para o gvfs é mais um calço de compatibilidade com versões anteriores que permite que todos os aplicativos acessem arquivos, em vez de ser o método preferido de acesso.
James Henstridge
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.