Nie mam żadnych alternatyw, które mogę polecić, ale mogę podać sugestie dotyczące przyspieszenia sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Powinno to uniknąć niektórych żądań podróży w obie strony, gdy próbujesz odczytać zawartość lub uprawnienia do plików, które już pobrałeś wcześniej w sesji.
sshfs symuluje usuwanie i zmiany lokalnie, więc nowe zmiany wprowadzone na komputerze lokalnym powinny pojawić się natychmiast, pomimo dużych limitów czasu, ponieważ dane w pamięci podręcznej są automatycznie usuwane.
Jednak te opcje nie są zalecane, jeśli zdalne pliki mogą zostać zaktualizowane bez wiedzy komputera lokalnego, np. Przez innego użytkownika lub zdalną powłokę ssh. W takim przypadku preferowane byłyby niższe limity czasu.
Oto kilka innych opcji, z którymi eksperymentowałem, chociaż nie jestem pewien, czy któraś z nich zrobiła różnicę:
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"
Powinieneś także sprawdzić opcje zalecane przez Meetai w jego odpowiedzi.
Rekurencja
Największym problemem w moim przepływie pracy jest próba odczytania wielu folderów, na przykład w głębokim drzewie, ponieważ sshfs wykonuje żądanie podróży w obie strony dla każdego folderu osobno. Może to być również wąskie gardło występujące w środowisku Eclipse.
Zgłaszanie próśb o wiele folderów równolegle mogłoby pomóc, ale większość aplikacji tego nie robi: zostały one zaprojektowane dla systemów plików o niskim opóźnieniu z buforowaniem z wyprzedzeniem odczytu, więc czekają na zakończenie statystyki jednego pliku przed przejściem do następnego .
Głoszenie
Ale coś, co sshfs mógłby zrobić, to spojrzeć w przyszłość na zdalny system plików, zebrać statystyki folderów, zanim ich zażądam, i wysłać je do mnie, gdy połączenie nie zostanie natychmiast zajęte. Zużyłoby to większą przepustowość (z danych nigdy wcześniej nieużywanych), ale mogłoby poprawić prędkość.
Możemy zmusić sshfs do wykonania buforowania z wyprzedzeniem odczytu, uruchamiając to przed rozpoczęciem zadania lub nawet w tle, gdy zadanie jest już w toku:
find project/folder/on/mounted/fs > /dev/null &
To powinno wstępnie buforować wszystkie wpisy katalogu, zmniejszając część późniejszych kosztów związanych z podróżami w obie strony. (Oczywiście musisz użyć dużych limitów czasu, takich jak te, które podałem wcześniej, w przeciwnym razie dane w pamięci podręcznej zostaną usunięte, zanim aplikacja uzyska do nich dostęp).
Ale to find
zajmie dużo czasu. Podobnie jak inne aplikacje, czeka na wyniki z jednego folderu, zanim zażąda następnego.
Może być możliwe skrócenie ogólnego czasu poprzez poproszenie wielu procesów wyszukiwania o przejrzenie różnych folderów. Nie testowałem, czy to naprawdę jest bardziej wydajne. Zależy, czy sshfs zezwala na równoległe żądania. (Myślę, że tak.)
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 &
Jeśli chcesz również wstępnie buforować zawartość pliku, możesz spróbować:
tar c project/folder/on/mounted/fs > /dev/null &
Oczywiście zajmie to znacznie więcej czasu, przeniesie dużo danych i wymaga dużej pamięci podręcznej. Ale kiedy to się skończy, dostęp do plików powinien być przyjemny i szybki.