AS 3.08 (x86): Pomalé kopírování přes SMB/CIFS - asynchronní algoritmus

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
tdlmarek
Posts: 4
Joined: 10 May 2013, 23:27

AS 3.08 (x86): Pomalé kopírování přes SMB/CIFS - asynchronní algoritmus

Post by tdlmarek »

Dobrý den.

Před pár lety se tu řešila otázka rychlosti kopírování na síťových discích, což vyústilo v implementaci nového asynchronního algoritmu, který problémy do značné míry vyřešil. Od té doby došlo navíc k určité stabilizaci, že např. už nepozoruji výrazné rozdíly mezi x86 a x64 verzí - takže ačkoliv já sám používám x32 kvůli WinSCP, níže popsané jsem otestoval i pod x64.

Zde bych rád řešil problém, že ačkoliv je aktuální Altap Salamander s asynchronním algoritmem rozhodně rychlejší než kdy dříve, a na většinu běžných akcí to nejspíše stačí, stále nedokáže plně využít kapacitu sítě - na rozdíl od Průzkumníka, který na stejném stroji kopíruje plnou rychlostí.

Provedl jsem sérii testů proti mému domácímu NASu a vyzkoušel nejrůznější scénáře, abych vyloučil nějakou vnější příčinu. Pro demonstraci jsem nakonec zvolil situaci při kopírování souboru o velikosti 8 GB. Všechny grafy jsou přímo z monitoringu NASu, ať jsou vzájemně porovnatelné. První je vždy zápis (tj. ukládám data z klienta na NAS), a následně čtení.

Nejprve tedy dva grafy srovnávající notebook s Linuxem (mount disku přes Sambu) a moje pracovní PC s aktuálními Windows 10 (x64 1607) při použití Průzkumníka.
smb_linux+explorer.png
smb_linux+explorer.png (36.26 KiB) Viewed 6837 times
Jak je vidět, chování je sice různé (používají se zcela rozdílné implementace protokolu), ale v obou případech v zásadě vyhovující. Průzkumník má sice nepatrně horší zápis, ale zase více konzistentní čtení, ovšem za cenu znatelnější zátěže CPU na NASu.

Nyní však přichází na řadu Altap Salamander, podmínky byly úplně stejné jako v případě použití Průzkumníka výše (včetně použité síťové cesty, kopírovaného souboru, ...), jenom se jako program pro kopírování použil AS. Zde se mi nevešly oba směry do jednoho grafu, takže jsou rozdělené.
smb_altap.png
smb_altap.png (33.44 KiB) Viewed 6837 times
Už samotný zápis je proti Linuxu i Průzkumníkovi o trochu pomalejší, ale co je překvapující, zejména čtení už je opravdu slabé. Pohybuje se odhadem kolem 55 MB/s, tedy poloviny dostupné šířky pásmy, což by rozhodně mohlo být lepší.

Ve snaze zjistit, kde by mohl být problém, jsem se pokusil odchytit si komunikaci pomocí Wiresharku a porovnat chování při čtení (největší rozdíl) mezi Průzkumníkem a AS. Nepouštěl jsem se do nějaké hloubkové analýzy SMB, všiml jsem si však následujícího. Adresa 10.0.216.8 je PC s Windows 10 (klient), 10.0.216.4 potom samotný NAS (server).
trace.png
trace.png (160.11 KiB) Viewed 6837 times
Základní cyklus je v podstatě identický, klient si vždy řekne o blok dat, server mu pošle 32768 bajtů (přesně dle konfigurace), a tak pořád dokola. Parametry zpráv se mi zdají identické (viz rozbalená Read Response) - koneckonců předpokládám, že se volají stejné systémové rutiny, AS asi nepoužívá vlastní implementaci síťového protokolu.

Při srovnání časové osy jsem si však všiml, že zatímco v případě Průzkumníka uplynulo mezi dvěma Read Request zprávami 0.000778 časových jednotek, v případě AS to bylo 0.001190. Podobný "skluz" se opakuje pravidelně, jako kdyby byl AS zkrátka pomalejší ve zpracování přijatých dat a trvalo mu déle, než si zažádá o další.


Snad jsou tyto informace dostačující a pomohou vám v identifikaci problému. Ačkoliv se zřejmě nejedná o kritickou chybu, bylo by příjemné, kdyby Altap Salamander dokázal přenášet data plnou rychlostí a člověk nemusel kvůli kopírování větších souborů přepínat do Průzkumníka.

Děkuji.


EDIT: Nemyslím, že by zde mohl být nějaký problém, ale pro úplnost doplňuji, že klientské PC je osazeno i5-4670k s 8 GB RAM a při problematickém chování jsem nepozoroval žádnou neúměrně zvýšenou zátěž. Během testů nebyl spuštěný žádný antivir, kromě vestavěného Defenderu, ani jiný podobný software.
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

Re: AS 3.08 (x86): Pomalé kopírování přes SMB/CIFS - asynchronní algoritmus

Post by tukanos »

Tohle je zajímavé. Možná by bylo dobré udělat testy ještě třeba s TC a zapnutou kontrolou správnosti přenesení souborů - a srovnat výsledky.

Jak jsem se tady dočetl AS v sobě integrován kontrolní součty, aby přenesené soubory byly v pořádku. Možná to může způsobit zpomalení.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5229
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: AS 3.08 (x86): Pomalé kopírování přes SMB/CIFS - asynchronní algoritmus

Post by Jan Rysavy »

To bude nějaký informační šum, Salamander u souborových operací neověřuje kontrolní součty. Jediné co děla, že důsledně kontroluje návratové hodnoty API volání, zobrazuje chyby uživateli, nabízí možnost operaci opakovat (Retry).
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

Re: AS 3.08 (x86): Pomalé kopírování přes SMB/CIFS - asynchronní algoritmus

Post by tukanos »

Jan Rysavy wrote:To bude nějaký informační šum, Salamander u souborových operací neověřuje kontrolní součty. Jediné co děla, že důsledně kontroluje návratové hodnoty API volání, zobrazuje chyby uživateli, nabízí možnost operaci opakovat (Retry).
Aha, tak to určitě bude informační šum. Díky za opravu. Pak, ale nevím jestli ta kontrola návratových hodnot může mít takový vliv nebo je to způsobeno něčím jiným.
Post Reply