Ich habe keine Alternativen zu empfehlen, kann aber Vorschläge zur Beschleunigung von sshfs machen:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Dies sollte einige Roundtrip-Anforderungen vermeiden, wenn Sie versuchen, Inhalte oder Berechtigungen für Dateien zu lesen, die Sie bereits zu einem früheren Zeitpunkt in Ihrer Sitzung abgerufen haben.
sshfs simuliert Löschvorgänge und Änderungen lokal, sodass neue Änderungen, die auf dem lokalen Computer vorgenommen wurden, trotz der großen Zeitüberschreitungen sofort angezeigt werden, da zwischengespeicherte Daten automatisch gelöscht werden.
Diese Optionen werden jedoch nicht empfohlen, wenn die Remote-Dateien möglicherweise aktualisiert werden, ohne dass der lokale Computer dies weiß, z. B. durch einen anderen Benutzer oder eine Remote-SSH-Shell. In diesem Fall sind geringere Timeouts vorzuziehen.
Hier sind einige weitere Optionen, mit denen ich experimentiert habe, obwohl ich nicht sicher bin, ob sie einen Unterschied gemacht haben:
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"
Sie sollten auch die von Meetai in seiner Antwort empfohlenen Optionen prüfen .
Rekursion
Das größte Problem in meinem Workflow besteht darin, dass ich versuche, viele Ordner zu lesen, z. B. in einem tiefen Baum, da sshfs für jeden Ordner eine Roundtrip-Anforderung separat ausführt. Dies kann auch der Engpass sein, den Sie mit Eclipse haben.
Das parallele Anfordern mehrerer Ordner könnte hier Abhilfe schaffen, aber die meisten Apps tun dies nicht: Sie wurden für Dateisysteme mit geringer Latenz und Read-Ahead-Caching entwickelt. Daher warten sie, bis ein Dateistatus abgeschlossen ist, bevor sie mit dem nächsten fortfahren .
Vor-Zwischenspeicherung
Aber etwas sshfs könnte , wäre tun , um nach vorne schaut auf dem Remote - Dateisystem, Ordner Statistiken sammeln , bevor ich sie bitten, und sie mir zu schicken , wenn die Verbindung nicht sofort besetzt. Dies würde mehr Bandbreite verbrauchen (von Lookahead-Daten, die nie verwendet werden), könnte aber die Geschwindigkeit verbessern.
Wir können sshfs zwingen, ein Read-Ahead-Caching durchzuführen, indem wir dies ausführen, bevor Sie mit Ihrer Aufgabe beginnen, oder sogar im Hintergrund, wenn Ihre Aufgabe bereits ausgeführt wird:
find project/folder/on/mounted/fs > /dev/null &
Dadurch sollten alle Verzeichniseinträge vorab zwischengespeichert werden, wodurch der spätere Overhead durch Roundtrips verringert wird. (Natürlich müssen Sie die großen Zeitlimits verwenden, die ich zuvor angegeben habe. Andernfalls werden die zwischengespeicherten Daten gelöscht, bevor Ihre App darauf zugreift.)
Aber das find
wird lange dauern. Wie bei anderen Apps wartet es auf die Ergebnisse aus einem Ordner, bevor es das nächste anfordert.
Möglicherweise können Sie die Gesamtzeit verkürzen, indem Sie mehrere Suchvorgänge auffordern, verschiedene Ordner zu durchsuchen. Ich habe nicht getestet, ob dies wirklich effizienter ist. Es hängt davon ab, ob sshfs Anforderungen parallel zulässt. (Ich denke schon.)
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 &
Wenn Sie auch Dateiinhalte vorab zwischenspeichern möchten, können Sie Folgendes versuchen:
tar c project/folder/on/mounted/fs > /dev/null &
Offensichtlich dauert dies viel länger, überträgt eine Menge Daten und erfordert eine enorme Cache-Größe. Aber wenn es fertig ist, sollte sich der Zugriff auf die Dateien angenehm und schnell anfühlen.