Permalänk
Medlem

SSHFS mount långsamt?

Tjena

Jag hyr en server i ett annat land som jag har mountat i min ubuntu 22.04 filserver hemma mha sshfs. Problemet är att det blivit långsamt, får ut max 60 Mbit/s på min 500 Mbit lina. Vet inte riktigt när det blev långsamt, men har nog varit så i ca två år nu. Känner att det börjar bli dags att försöka fixa det nu.

Har läst att sshfs kan vara ganska cpukrävande men sitter en 4770k i den aktuella datorn, tycker det ska vara fullt tillräckligt. Det har ju dessutom fungerat tidigare...

Har testat på flera olika datorer här hemma med olika distar som EndeavourOS, Fedora och Ubuntu men får samma låga hastighet med alla.

Tänkte först att det kanske är Telia som hastighetsbegränsat port 22 men jag får full hastighet om jag använder SFTP (både via cmd och med filezilla) istället på samma port och som mig veterligen är samma protokoll som sshfs?

Har även testat lite med rclone sftp mount som också ger full hastighet men har nackdelen att det blir en fördröjning på ett par minuter innan den upptäcker filförändringar osv, men är nog bästa alternativet jag hittat än så länge.

Någon som har några idéer?

Visa signatur
Permalänk
Hedersmedlem

Blir någon kärna maxbelastad när du överför filer? (Jag rekommenderar t ex htop för att kolla.)
Och jag antar att det är samma problem på stora filer som små?

Ett annat alternativ som workaround om du inte lyckas fixa det kan vara att testa Wireguard som VPN och något simpelt protokoll över det, typ Samba eller NFS.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem
Skrivet av Thomas:

Blir någon kärna maxbelastad när du överför filer? (Jag rekommenderar t ex htop för att kolla.)
Och jag antar att det är samma problem på stora filer som små?

Ett annat alternativ som workaround om du inte lyckas fixa det kan vara att testa Wireguard som VPN och något simpelt protokoll över det, typ Samba eller NFS.

Ingen kärna blir maxbelastad, märks knappt någon skillnad alls när man startar en överföring faktiskt. Alla kärnor pendlar mellan 1-6% belastning vid överföring av både stora och små filer.

Bra tips med wireguard, det finns förinstallerat på servern men tyvärr har jag inte rooträttigheter så kan inte testa med nfs eller samba. Provade för skojs skull med att mounta med sshfs över wireguard vpn men fick lika dåliga hastigheter ändå

Flera tips mottages tacksamt!

Visa signatur
Permalänk
Medlem

Om jag mins rätt så straffas SSH kapacitet hårt av längre pingtider och inget som är lätt att göra något åt - misstänker att andra VPN-lösningar har tagit fördel av denna nackdel.

Permalänk
Medlem

Är det mycket filer? Testa att montera en tom katalog och se om det går snabbare.

Permalänk
Medlem
Skrivet av Meto:

Är det mycket filer? Testa att montera en tom katalog och se om det går snabbare.

Hej, tack för svar! Jag har faktiskt redan provat det under min felsökning med samma resultat tyvärr.

Nåt som jag upptäckte tack vare @Thomas svar var dock att min cpu belastas inte nämnvärt men däremot när jag kikade på remote servern så belastas alla (48!) kärnor till max när jag startar en överföring så jag är rätt säker på att problemet ligger på serversidan.

Det är en shared seedbox så misstänker att min användare är begränsad till en viss procent cpu och inte mycket att göra åt det utan att det kommer kosta mer

Visa signatur
Permalänk
Medlem
Skrivet av immutable:

Hej, tack för svar! Jag har faktiskt redan provat det under min felsökning med samma resultat tyvärr.

Nåt som jag upptäckte tack vare @Thomas svar var dock att min cpu belastas inte nämnvärt men däremot när jag kikade på remote servern så belastas alla (48!) kärnor till max när jag startar en överföring så jag är rätt säker på att problemet ligger på serversidan.

Det är en shared seedbox så misstänker att min användare är begränsad till en viss procent cpu och inte mycket att göra åt det utan att det kommer kosta mer

Du kanske behöver hyra en bare metal-server istället för en översåld VPS..

Permalänk
Medlem
Skrivet av immutable:

Hej, tack för svar! Jag har faktiskt redan provat det under min felsökning med samma resultat tyvärr.

Nåt som jag upptäckte tack vare @Thomas svar var dock att min cpu belastas inte nämnvärt men däremot när jag kikade på remote servern så belastas alla (48!) kärnor till max när jag startar en överföring så jag är rätt säker på att problemet ligger på serversidan.

Det är en shared seedbox så misstänker att min användare är begränsad till en viss procent cpu och inte mycket att göra åt det utan att det kommer kosta mer

Jag har inte koll på implementations detaljerna gällande SSHFS men hur ser du att filöverföringarna är långsamma, syns inte detta enbart när du måste göra stora synkningar? Isf, får detta mig att fundera på hur uppstår stora synkningar eftersom SSHFS enbart borde synka filer/chunks av filer som inte redan finns på remote:en?

Lite off-topic men behöver du verkligen SSHFS eller schemalagt rsync:ande hade kanske fungerat?

Permalänk
Medlem
Skrivet av orp:

Jag har inte koll på implementations detaljerna gällande SSHFS men hur ser du att filöverföringarna är långsamma, syns inte detta enbart när du måste göra stora synkningar? Isf, får detta mig att fundera på hur uppstår stora synkningar eftersom SSHFS enbart borde synka filer/chunks av filer som inte redan finns på remote:en?

Lite off-topic men behöver du verkligen SSHFS eller schemalagt rsync:ande hade kanske fungerat?

Jag kontrollerar hastigheten mha

rsync -P /path/to/sshfs/mount/file.mkv /path/to/local/folder

Jag behöver sshfs eller likvärdigt sätt att montera en remote server för att sonarr och radarr ska kunna plocka upp nya filer...

Visa signatur
Permalänk
Medlem
Skrivet av immutable:

Problemet är att det blivit långsamt, får ut max 60 Mbit/s

[...]

jag får full hastighet om jag använder SFTP (både via cmd och med filezilla) istället på samma port och som mig veterligen är samma protokoll som sshfs?

Jag tippar på att det aldrig funkat bra och att du inte har siffror på att "det" någonsin var snabbt.

Skrivet av orp:

Jag har inte koll på implementations detaljerna gällande SSHFS

Typ så här:

SSHFS-demonen gör socketpair/fork/dup2/execve-dansen för att starta den vanliga ssh-binären med parametern -s, dvs som SFTP-klient, för att kunna skriva till/läsa från sftp-klientens stdin/stdout.

När en user-space-process, kanske /bin/bash, skriver till en fil, write(), så görs en context-switch till kerneln. Kerneln skriver till /dev/fuse så att SSHFS-processen kan läsa den skrivna datan via libfuse (context-switch till user space). SSHFS mecklar ihop en iovec med SFTP-protokollets headrar samt datat och skriver till sftp/ssh-processens stdin (context-switch till kerneln, därefter context-switch till sftp/ssh-processen). sftp-processen skriver därefter till sin nätverks-socket (context-switch till kerneln).

Typ fem context-switchar alltså, kanske färre om sftp-processen mecklar ihop sin stdin med nätverks-socketen (orkar inte kolla). Kanske fler om jag har missuppfattat FUSE-protokollet mellan SSHFS och kerneln.

I jämförelse behöver sftp när den kör självständigt bara göra en context-switch till kerneln, för att skriva till nätverks-socketen. Det kommer alltså aldrig bli samma prestanda för de båda.

Jag säger inte att det förklarar hela diffen mellan att köra sftp-kommandot manuellt och att köra över SSHFS, men jag gissar att det är starkt bidragande.

Man kan jämföra med SMB-protokollet här, där det numera finns en kernel-implementation, ksmbd, som alternativ till samba i user space.

Skrivet av xxargs:

Om jag mins rätt så straffas SSH kapacitet hårt av längre pingtider och inget som är lätt att göra något åt - misstänker att andra VPN-lösningar har tagit fördel av denna nackdel.

SSH kör över TCP, så det är framför allt varians i latens som är tråkigt, men även stor utestående oACKad mängd data kan vara problematiskt om bufferstorlekarna är begränsade. Inget av det tycks problematiskt i TS fall eftersom SFTP funkar bra. TCP meltdown (TCP över TCP) kommer inte i spel här, det är det vanliga problemet om man kör TCP-baserat i stället för UDP-baserat VPN.

Permalänk
Medlem
Skrivet av KAD:

Typ så här:

SSHFS-demonen gör socketpair/fork/dup2/execve-dansen för att ...

Jag fiskade efter om SSHFS använder motsvarande delta encoding som rsync?

Nu när jag vet att TS använde rsync för att mäta hastigheten så kommer svaret inte ha betydelse för att lösa TS problem men jag är fortfarande nyfiken om du har svaret.

Permalänk
Medlem
Skrivet av KAD:

Jag tippar på att det aldrig funkat bra och att du inte har siffror på att "det" någonsin var snabbt.

Tror du kan ha rätt faktiskt.

Jag har kört med denna lösning en herrans massa år och från början hade jag bara 60 Mbit ADSL. Sen har åren rullat på och min internetanslutning har blivit snabbare och snabbare (60 > 100 > 250 > 500 Mbit) men jag har ju faktiskt inte aktivt övervakat hastigheten.

Oftast så plockar ju radarr och sonarr upp filer automatiskt så då har det ju bara funnits på min server helt magiskt när man ska se på nåt.

Hur som helst så håller jag på att avveckla seedboxen och har skaffat en ProtonVPN (Wireguard) prenumeration istället så jag kan köra alla tjänster jag behöver lokalt istället!

Visa signatur
Permalänk
Medlem
Skrivet av immutable:

Hej, tack för svar! Jag har faktiskt redan provat det under min felsökning med samma resultat tyvärr.

Kul att du hittade flaskhalsen. Kan vara så att din VPS inte har hårdvarastöd för kryptering som sftp använder