Eu não tenho alternativas para recomendar, mas posso fornecer sugestões sobre como acelerar o sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Isso deve evitar algumas solicitações de ida e volta quando você está tentando ler conteúdo ou permissões para arquivos que você já recuperou anteriormente em sua sessão.
sshfs simula exclusões e alterações localmente, portanto, novas alterações feitas na máquina local devem aparecer imediatamente, apesar dos grandes tempos limite, já que os dados em cache são descartados automaticamente.
Mas essas opções não são recomendadas se os arquivos remotos puderem ser atualizados sem o conhecimento da máquina local, por exemplo, por um usuário diferente ou um shell ssh remoto. Nesse caso, tempos limites menores seriam preferíveis.
Aqui estão mais algumas opções que experimentei, embora não tenha certeza se alguma delas fez diferença:
sshfs_opts="-o auto_cache -o cache_timeout=115200 -o attr_timeout=115200 \
-o entry_timeout=1200 -o max_readahead=90000 -o large_read -o big_writes \
-o no_remote_lock"
Você também deve verificar as opções recomendado por Meetai em sua resposta.
Recursão
O maior problema no meu fluxo de trabalho é quando tento ler muitas pastas, por exemplo, em uma árvore profunda, porque o sshfs realiza uma solicitação de ida e volta para cada pasta separadamente. Esse também pode ser o gargalo que você experimenta com o Eclipse.
Fazer solicitações para várias pastas em paralelo pode ajudar nisso, mas a maioria dos aplicativos não faz isso: eles foram projetados para sistemas de arquivos de baixa latência com cache de leitura antecipada, então aguardam a conclusão de uma estatística antes de continuar para o próximo.
Pré-cache
Mas algo que o sshfs poderia fazer seria olhar para frente no sistema de arquivos remoto, coletar estatísticas de pasta antes de solicitá-las e enviá-las para mim quando a conexão não for imediatamente ocupada. Isso usaria mais largura de banda (a partir de dados lookahead que nunca são usados), mas poderia melhorar a velocidade.
Podemos forçar o sshfs a fazer algum cache de leitura antecipada, executando isso antes de começar sua tarefa, ou mesmo em segundo plano, quando sua tarefa já estiver em andamento:
find project/folder/on/mounted/fs > /dev/null &
Isso deve pré-armazenar em cache todas as entradas de diretório, reduzindo algumas das sobrecargas posteriores das viagens de ida e volta. (É claro que você precisa usar os tempos limite grandes, como os que forneci anteriormente, ou esses dados armazenados em cache serão limpos antes que o seu aplicativo os acesse).
Mas esse find
demorará muito tempo. Como outros aplicativos, ele aguarda os resultados de uma pasta antes de solicitar a próxima.
Pode ser possível reduzir o tempo geral solicitando vários processos de localização para examinar pastas diferentes. Eu não testei para ver se isso é realmente mais eficiente. Depende se o sshfs permite solicitações em paralelo. (Eu acho que sim.)
find project/folder/on/mounted/fs/A > /dev/null &
find project/folder/on/mounted/fs/B > /dev/null &
find project/folder/on/mounted/fs/C > /dev/null &
Se você também quiser armazenar em cache o conteúdo do arquivo, tente isso:
tar c project/folder/on/mounted/fs > /dev/null &
Obviamente, isso levará muito mais tempo, transferirá muitos dados e exigirá que você tenha um tamanho de cache enorme. Mas quando estiver pronto, o acesso aos arquivos deve ser agradável e rápido.