Não tenho alternativas para recomendar, mas posso fornecer sugestões de 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 na sua sessão.
O sshfs simula exclusões e alterações localmente, portanto, as novas alterações feitas na máquina local devem aparecer imediatamente, apesar dos grandes tempos limite, pois 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 a máquina local saber, por exemplo, por um usuário diferente ou por um shell ssh remoto. Nesse caso, tempos limite mais baixos seriam preferíveis.
Aqui estão mais algumas opções com as quais experimentei, embora não tenha certeza se alguma delas fez alguma 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 recomendadas 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 executa 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; portanto, esperam que uma estatística de arquivo seja concluída antes de passar para a próxima .
Precaching
Mas algo que o sshfs poderia fazer seria olhar para o futuro no sistema de arquivos remoto, coletar estatísticas de pastas antes de solicitá-las e enviá-las para mim quando a conexão não estiver imediatamente ocupada. Isso usaria mais largura de banda (a partir de dados de lookahead que nunca são usados), mas poderia melhorar a velocidade.
Podemos forçar o sshfs a fazer algum cache de leitura antecipada, executando-o antes de iniciar 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 do diretório, reduzindo parte da sobrecarga posterior de viagens de ida e volta. (Obviamente, você precisa usar os tempos limite grandes, como os fornecidos anteriormente, ou esses dados em cache serão limpos antes que o aplicativo os acesse.)
Mas isso find
vai levar muito tempo. Como outros aplicativos, aguarda os resultados de uma pasta antes de solicitar a próxima.
Pode ser possível reduzir o tempo total solicitando que vários processos de localização procurem pastas diferentes. 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 deseja pré-armazenar em cache o conteúdo do arquivo, tente o seguinte:
tar c project/folder/on/mounted/fs > /dev/null &
Obviamente, isso levará muito mais tempo, transferirá muitos dados e exige que você tenha um tamanho de cache enorme. Mas, quando terminar, o acesso aos arquivos deve ser agradável e rápido.