[Samba] What is the maximum speed for download from a samba share

L A Walsh samba at tlinx.org
Sat Apr 21 03:54:53 UTC 2018


Knut Krüger via samba wrote:
> What is the maximum speed for download from a samba share?
>
> I have a 100 kbit/s Internet
>
> The maximum speed for a download from my  webserver with samba is about 
> 25.000 kbit/s
>
> The bottleneck is the samba access.  Without samba  I can download with 
> 100 kbit/s
>
> So the question? is it possible to get more speed or is this the maximum 
> speed with samba?
>
> I tried a lot of hints for samba tuning but nothing was faster.
>   
100 kbit/s?  as in 12.2KB/s?  Ouch.
I was able to get 125mB on writes and 119mB reads using a 1gbit ethernet.
I start to lose speed on 10gb with limiting factor being cpu on
client OR server depending on packet size.

Sent a recent note to the cygwin list (used cygwin in the testing).


My experience was to use the cifs protocol as easiest (over a local
network).  With a 10Gb (limited to 8Gb due to running on older
PCIe interface) card, I'm getting:

/h> bin/iotest
Using bs=16.0M, count=64, iosize=1.0G
R:1073741824 bytes (1.0GB) copied, 1.67486 s, 611MB/s
W:1073741824 bytes (1.0GB) copied, 4.01592 s, 255MB/s
....

Also, on a local net, using Jumbo packets also helps
(I have a 9000B MTU on my local net).

The speeds / values using 'Bytes', (2**3) use the base2
prefixes for consistency.  To get values in mbits, multiple
by 8.388608.

The above test only tests transfer speed -- not file i/o --
it uses /dev/zero for a source and /dev/null for a target.

To simplify testing, I created devices 'zero' and 'null'
in my home directory:
(on linux):
>  > ll zero null
crwxrw-rw- 1 1, 3 May 20  2016 null
crw-rw-rw- 1 1, 5 Jun 15  2015 zero
(on cygwin):
/h> ll zero null
-rwxrw-rw- 1 0 May 20  2016 null*
-rw-rw-rw- 1 0 Jun 15  2015 zero

For write, I used cygwin's 'dd' with if=/dev/zero and of=/h/null.
For read, I used if=/h/zero and of=/dev/null.

Flags for reading: iflag=fullblock conv=nocreat
  and for writing: oflag=direct iflag=fullblock conv=nocreat,notrunc

To test the CPU bounding, I just tried limiting the clock speeds
on the client and server.

Limiting the linux-server's max cpu-speed had
the most affect on performance:
(limited to 1.6GHz instead of 2.4GHz) (33% limitation)

Using bs=16.0M, count=256, iosize=4.0G (~35% slowdown)
R:4294967296 bytes (4.0GB) copied, 10.4467 s, 392MB/s
W:4294967296 bytes (4.0GB) copied, 21.5026 s, 190MB/s

Limiting the client (cygwin-win7sp1x64): (~7-13% slowdown)
(clock limited to 1.16GHz instead of 3.2)

Using bs=16.0M, count=256, iosize=4.0G
R:4294967296 bytes (4.0GB) copied, 7.14355 s, 573MB/s
W:4294967296 bytes (4.0GB) copied, 15.9781 s, 256MB/s

This would indicate that even in the unencrypted case
network transfer speed is cpu bound (and this is using
Jumbo packets).  Using scp or rsync+ssh, speeds dropped to
between 100-200MB/s in either direction.

W/o encryption, I'd expect samba to get near line speeds over
a 100kb connection as that shouldn't come close to being CPU bound.







More information about the samba mailing list