No tengo ninguna alternativa para recomendar, pero puedo proporcionar sugerencias sobre cómo acelerar sshfs:
sshfs -o cache_timeout=115200 -o attr_timeout=115200 ...
Esto debería evitar algunas de las solicitudes de ida y vuelta cuando intente leer contenido o permisos para archivos que ya recuperó anteriormente en su sesión.
sshfs simula eliminaciones y cambios localmente, por lo que los nuevos cambios realizados en la máquina local deberían aparecer inmediatamente, a pesar de los grandes tiempos de espera, ya que los datos en caché se eliminan automáticamente.
Pero estas opciones no se recomiendan si los archivos remotos pueden actualizarse sin que la máquina local lo sepa, por ejemplo, por un usuario diferente o un shell ssh remoto. En ese caso, serían preferibles tiempos de espera más bajos.
Aquí hay algunas opciones más con las que experimenté, aunque no estoy seguro de si alguna de ellas hizo alguna diferencia:
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"
También debe consultar las opciones recomendadas por Meetai en su respuesta.
Recursividad
El mayor problema en mi flujo de trabajo es cuando intento leer muchas carpetas, por ejemplo en un árbol profundo, porque sshfs realiza una solicitud de ida y vuelta para cada carpeta por separado. Este también puede ser el cuello de botella que experimente con Eclipse.
Hacer solicitudes para varias carpetas en paralelo podría ayudar con esto, pero la mayoría de las aplicaciones no lo hacen: fueron diseñadas para sistemas de archivos de baja latencia con almacenamiento en caché de lectura anticipada, por lo que esperan a que se complete una estadística de archivo antes de pasar a la siguiente .
Precaching
Pero algo que sshfs podría hacer sería mirar hacia el sistema de archivos remoto, recopilar estadísticas de carpetas antes de solicitarlas y enviármelas cuando la conexión no esté ocupada de inmediato. Esto usaría más ancho de banda (de datos anticipados que nunca se usan) pero podría mejorar la velocidad.
Podemos obligar a sshfs a hacer un almacenamiento en caché de lectura anticipada, ejecutando esto antes de comenzar su tarea, o incluso en segundo plano cuando su tarea ya está en marcha:
find project/folder/on/mounted/fs > /dev/null &
Eso debería almacenar previamente en caché todas las entradas del directorio, reduciendo parte de la sobrecarga posterior de los viajes de ida y vuelta. (Por supuesto, debe usar los tiempos de espera grandes como los que proporcioné anteriormente, o estos datos en caché se borrarán antes de que su aplicación acceda a ellos).
Pero eso find
llevará mucho tiempo. Al igual que otras aplicaciones, espera los resultados de una carpeta antes de solicitar la siguiente.
Podría ser posible reducir el tiempo total al solicitar múltiples procesos de búsqueda para buscar en diferentes carpetas. No he probado para ver si esto realmente es más eficiente. Depende de si sshfs permite solicitudes en paralelo. (Creo que sí)
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 también desea almacenar previamente en caché el contenido del archivo, puede intentar esto:
tar c project/folder/on/mounted/fs > /dev/null &
Obviamente, esto llevará mucho más tiempo, transferirá una gran cantidad de datos y requerirá que tenga un gran tamaño de caché. Pero cuando está hecho, acceder a los archivos debería sentirse bien y rápido.