Hastighet vid filöverföring till nätverksenhet sjunker till noll/mycket lågt

Permalänk
Medlem

Hastighet vid filöverföring till nätverksenhet sjunker till noll/mycket lågt

Har ett konstigt problem med SMB som jag inte finner svaret till genom mina sökningar. Har en WD DL4100 NAS som kör SMB. Från en dator som dualbootar Linux och Windows 10 så funkar filöverföringar över SMB utan problem i Linux. I Windows är hastigheten hög i början för att sedan sjunka till noll och därefter till mycket låga hastigheter. Att föra över t.ex. 1-2GB med bildfiler eller .flac tar omkring 30 minuter. Se bifogad bild som exempel.

Både Windows och Linux installationerna pratar SMB v2 med NAS:en och eftersom båda OS kör på samma dator misstänker jag att felet ligger på klientsidan för Windows-installationen. Av bilden att döma blir någon buffer eller liknande full och därefter blir det segt. Problemet uppstår oavsett om jag kopierar till en share som kräver autentisering eller ej.

Bild på filkopiering:
https://i.imgur.com/KypmZtx.png

Har försökt följande:

  • Kopiera med obuffrad I/O

  • Stänga av "bandwidth throttling"

  • Stänga av Large Send Offload (LSO)

  • Utöka MaxBufferSize för SMB

  • Stänga av EnableSecuritySignature för SMB

  • Utöka AdditionalCriticalWorkerThreads för SMB

  • Utöka MaxThreadsPerQueue för SMB

  • Endast tillåta SMB v1

Har slut på ideer, har ni några förslag?

Permalänk
Inaktiv

Möjligt att datan för överföringen inte är "synkad" i Linux, dvs. det är lagrat i minnet och håller på att flyttas över till lagringen. Om du kör

sync

direkt när överföringen är klar i Linux, tar det tid för sync att köras färdigt? Eller är den klar direkt?

Känner igen problemet, både för nätverksöverföringar men också typ usb-stickor. Överföringar i Linux kan framstå som extremt snabba, men det är bara för att överföringen rapporterar som "klar" när den egentligen bara har förberett all data för att skrivas till disk.

Permalänk
Avstängd

Windows hanterar kopieringen av filer väldigt annorlunda mot linux, många små filer kan ta väldigt lång tid mot en stor fil.

Permalänk
Medlem
Skrivet av anon334363:

Möjligt att datan för överföringen inte är "synkad" i Linux, dvs. det är lagrat i minnet och håller på att flyttas över till lagringen. Om du kör

sync

direkt när överföringen är klar i Linux, tar det tid för sync att köras färdigt? Eller är den klar direkt?

Känner igen problemet, både för nätverksöverföringar men också typ usb-stickor. Överföringar i Linux kan framstå som extremt snabba, men det är bara för att överföringen rapporterar som "klar" när den egentligen bara har förberett all data för att skrivas till disk.

Testade och kommandot är färdigt direkt.

Skrivet av stgr:

Windows hanterar kopieringen av filer väldigt annorlunda mot linux, många små filer kan ta väldigt lång tid mot en stor fil.

Förvisso men som du ser på bilden så är det typ ingen hastighet alls efter att ca 5 .flac filer överförts. Som skrivet i TS, det tar ca 30 min för att skicka ett par GB data.

Permalänk
Inaktiv

Prova tillfälligt stänga av "realtime protection" under "Virus and threat protection" i windows inställningarna. Denna förgör prestandan totalt för mig ibland, vare sig det är kompilering eller rsync överföringar.

Permalänk
Medlem

Är det från windows till NAS eller tvärt om - är det lika trögt i båda riktningarna?

Hur det ser det ut i windows taskmanagern - något som käkar CPU - någon lagring med 100% busy men ingen nämnvärd dataflöde?

---

Som redan nämnt kan AV-program/Defender sätta krokben och överföringshastighet bli helt bedrövlig både i överföring och i skapande av nya filer (som när många små filer skall göras backup på/flyttas) med oerhörd stor overhead - och det är inte alltid det syns som hög CPU-last utan bara 'väntande' - om NTFS är trög (stor $MFT att hantera som vid många småfiler skall skapas på en gång) så syns det heller inte som någon last i processortabellerna då man av någon anledning inte vill visa detta i processlistorna...

Permalänk
Medlem
Skrivet av anon334363:

Prova tillfälligt stänga av "realtime protection" under "Virus and threat protection" i windows inställningarna. Denna förgör prestandan totalt för mig ibland, vare sig det är kompilering eller rsync överföringar.

Skrivet av xxargs:

Är det från windows till NAS eller tvärt om - är det lika trögt i båda riktningarna?

Hur det ser det ut i windows taskmanagern - något som käkar CPU - någon lagring med 100% busy men ingen nämnvärd dataflöde?

---

Som redan nämnt kan AV-program/Defender sätta krokben och överföringshastighet bli helt bedrövlig både i överföring och i skapande av nya filer (som när många små filer skall göras backup på/flyttas) med oerhörd stor overhead - och det är inte alltid det syns som hög CPU-last utan bara 'väntande' - om NTFS är trög (stor $MFT att hantera som vid många småfiler skall skapas på en gång) så syns det heller inte som någon last i processortabellerna då man av någon anledning inte vill visa detta i processlistorna...

Gick snabbt att kopiera från NAS:en, något jag glömt prova då jag i princip alltid skickar filerna från Windows till NAS:en och inte tvärtom.

Ni hade rätt, verkar vara Windows Defender som är boven i dramat, slog av alla dess funktioner och nu lyckas jag kopiera filer i 80-90MB/s. Trodde inte det var möjligt att antivirus kunde slakta prestanda så enormt. Stort tack för hjälpen!

Permalänk
Medlem

När jag gjorde 10-miljoners småfiltestet (ej på systemdisken - gör inte det...) så var defender/'realtime protection' något som helt sabbade prestandan mot disk och även med den avstängd så är skapandehastigheter av småfiler ca 1/10-del av farten man får under en Linux-system med ext4/BTRFS.

NTFS är lika jobbig under Linux som Windows med nära identiska tider och också arbetar enkeltrådat under linux, så jag gissar att filsystemet som sådant i sin struktur är mycket svår att parallellisera.

- det var också då jag upptäckte att tiden som förbrukades för filsystemet inte syntes i processlistorna i windows men med CPU-lasten minus belastnings-procenten på alla processerna sammanlagt kunde man se att upp till en kärna/tråd av processor-lasten aldrig redovisades och antas vara här för filsystemhanteringen - men blev heller aldrig mer än en, vilket betyder att NTFS hanteras enkeltrådat och går inte fortare oavsett hur många kärnor man har i sin propp - här syns åldern av NTFS från tiden när man bara hade en enda processor som skötte allt. Idag ligger också en hel stack med olika plåster ovanpå NTFS för att få NTFS att se mer modern ut med shadowcopy och annan hantering (inklusive AV-krokar som lyssnar på trafiken till/från disken/nätverket).

MS behöver verkligen göra något nytt här i filsystem-väg...

Permalänk
Medlem
Skrivet av xxargs:

När jag gjorde 10-miljoners småfiltestet (ej på systemdisken - gör inte det...) så var defender/'realtime protection' något som helt sabbade prestandan mot disk och även med den avstängd så är skapandehastigheter av småfiler ca 1/10-del av farten man får under en Linux-system med ext4/BTRFS.

NTFS är lika jobbig under Linux som Windows med nära identiska tider och också arbetar enkeltrådat under linux, så jag gissar att filsystemet som sådant i sin struktur är mycket svår att parallellisera.

- det var också då jag upptäckte att tiden som förbrukades för filsystemet inte syntes i processlistorna i windows men med CPU-lasten minus belastnings-procenten på alla processerna sammanlagt kunde man se att upp till en kärna/tråd av processor-lasten aldrig redovisades och antas vara här för filsystemhanteringen - men blev heller aldrig mer än en, vilket betyder att NTFS hanteras enkeltrådat och går inte fortare oavsett hur många kärnor man har i sin propp - här syns åldern av NTFS från tiden när man bara hade en enda processor som skötte allt. Idag ligger också en hel stack med olika plåster ovanpå NTFS för att få NTFS att se mer modern ut med shadowcopy och annan hantering (inklusive AV-krokar som lyssnar på trafiken till/från disken/nätverket).

MS behöver verkligen göra något nytt här i filsystem-väg...

Just det med att belastningen av filsystemet inte redovisas i aktivitetshanteraren var något som gjorde min felsökningsprocess mycket svårare då ingen process stack ut nämnvärt. Däremot vid senare tester såg jag att en Windows defender-processen gick från 14MB minnesförbrukning till 200MB. Hade man däremot startat aktivitetshanteraren efter att minnesförbrukningen stigit så hade man inte reflekterat över det eftersom 200MB minne för en process är inget märkvärdigt.