Je n'ai aucune alternative à recommander, mais je peux fournir des suggestions pour accélérer sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Cela devrait éviter certaines des demandes d'aller-retour lorsque vous essayez de lire du contenu ou des autorisations pour des fichiers que vous avez déjà récupérés plus tôt dans votre session.
sshfs simule les suppressions et les modifications localement. Par conséquent, les nouvelles modifications effectuées sur la machine locale doivent apparaître immédiatement, malgré les délais importants, car les données en cache sont automatiquement supprimées.
Mais ces options ne sont pas recommandées si les fichiers distants peuvent être mis à jour sans que la machine locale ne le sache, par exemple par un autre utilisateur ou par un shell ssh distant. Dans ce cas, des délais plus courts seraient préférables.
Voici quelques autres options que j'ai expérimentées, bien que je ne sois pas sûr qu'elles fassent la différence:
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"
Vous devriez également vérifier les options recommandées par Meetai dans sa réponse.
Récursion
Le plus gros problème de mon flux de travail est lorsque j'essaie de lire plusieurs dossiers, par exemple dans une arborescence profonde, car sshfs effectue une demande d'aller-retour pour chaque dossier séparément. Cela peut également être le goulot d'étranglement que vous rencontrez avec Eclipse.
Effectuer des demandes pour plusieurs dossiers en parallèle peut aider, mais la plupart des applications ne le font pas: elles ont été conçues pour des systèmes de fichiers à faible latence avec mise en cache à lecture anticipée, de sorte qu'elles attendent la fin d'une statistique de fichier avant de passer à la suivante. .
Précaché
Mais quelque chose que sshfs pourrait faire serait de regarder en avant le système de fichiers distant, de collecter les statistiques de dossiers avant que je ne les demande, et de me les envoyer lorsque la connexion n’est pas immédiatement occupée. Cela utiliserait plus de bande passante (à partir de données inattendues jamais utilisées) mais pourrait améliorer la vitesse.
Nous pouvons forcer sshfs à faire de la mise en cache à lecture anticipée, en l'exécutant avant de commencer votre tâche, ou même en arrière-plan lorsque votre tâche est déjà en cours:
find project/folder/on/mounted/fs > /dev/null &
Cela devrait pré-mettre en cache toutes les entrées du répertoire, ce qui réduira certains des frais généraux liés aux allers-retours. (Bien entendu, vous devez utiliser les délais importants, comme ceux que j'ai fournis précédemment, sinon ces données en cache seront effacées avant que votre application n'y accède.)
Mais cela find
prendra beaucoup de temps. Comme d'autres applications, il attend les résultats d'un dossier avant de demander le suivant.
Il serait peut-être possible de réduire le temps total en demandant à plusieurs processus de recherche de consulter différents dossiers. Je n'ai pas testé pour voir si cela est vraiment plus efficace. Cela dépend si sshfs autorise les requêtes en parallèle. (Je pense que c'est le cas.)
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 &
Si vous souhaitez également pré-mettre en cache le contenu des fichiers, vous pouvez essayer ceci:
tar c project/folder/on/mounted/fs > /dev/null &
Évidemment, cela prendra beaucoup plus de temps, transférera beaucoup de données et nécessitera une taille de cache énorme. Mais quand c'est fait, accéder aux fichiers devrait être agréable et rapide.