Hello Steve > Test read performance over 1GbE network with command: Also test read performance over 10GbE network, vers=2.1+ can reach over 600 MB/s with v2.patch. aarch64, page size 64KB (CONFIG_ARM64_64K_PAGES=y), linux-4.2.8, cpu Annapurna Labs Alpine AL324 Quad-core ARM Cortex-A57 CPU @ 1.70GHz, ram 8GB, with patch, vers=1.0,cache=strict: read throughput 110MB/s, max read IO size 16KB vers=2.0,cache=strict: read throughput 106MB/s, max read IO size 16KB vers=2.1,cache=strict: read throughput 667MB/s, max read IO size 1MB vers=3.0,cache=strict: read throughput 639MB/s, max read IO size 1MB without patch, vers=1.0,cache=strict: read throughput 107MB/s, max read IO size 16KB vers=2.0,cache=strict: read throughput 107MB/s, max read IO size 16KB vers=2.1,cache=strict: read throughput 106MB/s, max read IO size 16KB vers=3.0,cache=strict: read throughput 106MB/s, max read IO size 16KB command: mount -tcifs //<server_ip>/<share> /remote_strict -overs=<x.y>,cache=strict,username=<uu>,password=<pp> dd if=/remote_strict/10G.img of=/dev/null bs=1M count=10240 -- Regards, Jones Syue | 薛懷宗 QNAP Systems, Inc. On Thu, Apr 16, 2020 at 11:46 AM Jones Syue <jonessyue@xxxxxxxx> wrote: > > Hello Steve > > > Did you also test (at least briefly) with vers=1.0 since some of your > > code affects that code path too? > > Yes test v2.patch on 2 platforms aarch64 (page size 64KB) and x86_64 > (page size 4KB), vers=1.0 read function works fine on both. > > Test read performance over 1GbE network with command: > 'dd if=/remote_strict/10G.img of=/dev/null bs=1M count=10240' > > For read performance on aarch64 (page size 64KB), vers=[1.0|2.0] is not as > fast as vers=2.1+, max_read on both SMB 1 (16KB) and SMB 2.0 (64KB) are > still smaller then page size 64KB plus packet header size, hence do not > support readpages. > aarch64, page size 64KB (CONFIG_ARM64_64K_PAGES=y), linux-4.2.8, > cpu Annapurna Labs Alpine AL324 Quad-core ARM Cortex-A57 CPU @ 1.70GHz, > ram 8GB, > with patch, > vers=1.0,cache=strict: read throughput 40MB/s, max read IO size 16KB > vers=2.0,cache=strict: read throughput 40MB/s, max read IO size 16KB > vers=2.1,cache=strict: read throughput 115MB/s, max read IO size 1MB > vers=3.0,cache=strict: read throughput 115MB/s, max read IO size 1MB > without patch, > vers=1.0,cache=strict: read throughput 40MB/s, max read IO size 16KB > vers=2.0,cache=strict: read throughput 40MB/s, max read IO size 16KB > vers=2.1,cache=strict: read throughput 40MB/s, max read IO size 16KB > vers=3.0,cache=strict: read throughput 40MB/s, max read IO size 16KB > > For read performance on x86_64 (page size 4KB), all vers can support > readpages because max_read is bigger than page size 4KB plus packet header > size. > x86_64, page size 4KB, linux-4.2.8, > cpu AMD Embedded R-Series RX-421ND 2.10GHz, > ram 4GB, > without patch, > vers=1.0,cache=strict: read throughput 109MB/s, read IO size 60KB > vers=2.0,cache=strict: read throughput 115MB/s, read IO size 64KB > vers=2.1,cache=strict: read throughput 117MB/s, read IO size 1MB > vers=3.0,cache=strict: read throughput 117MB/s, read IO size 1MB > with patch, > vers=1.0,cache=strict: read throughput 110MB/s, read IO size 60KB > vers=2.0,cache=strict: read throughput 115MB/s, read IO size 64KB > vers=2.1,cache=strict: read throughput 117MB/s, read IO size 1MB > vers=3.0,cache=strict: read throughput 117MB/s, read IO size 1MB > > > And if anyone figures out how to configure an x86_64 Linux to use > > PAGE_SIZE of 64K or larger let me know... > I am using physical platform with arm cpu and aarch64 toolchain, > perhaps try qemu-system-aarch64 later. > > -- > Regards, > Jones Syue | 薛懷宗 > QNAP Systems, Inc.