SAMBA/CIFS Performance issues with Raspberry PI

Status
Not open for further replies.

Morpheus187

Explorer
Joined
Mar 11, 2016
Messages
61
Hi Guys

I'm quite new to freenas, but I read a lot and finally built a machine and replace my old QNAP 859 device.

I also use a raspberry pi 2 as media device and after moving everything to the new FREENAS Box a particular large file is not playing back well, its buffering and stuttering when being served from freenas and after a few seconds it completely stops playback, from QNAP it runs fine without a delay or stuttering.

The Raspberry is getting the data via CIFS/Samba

The File copy transfer speed is not an issue, I can copy files from my windows machine with 100 MB/S ( MegaByte )

I worked the half night to solve the issue, without success, I'm pretty sure (95%) the problem has something do to with the freenas box, maybe one of you smart guys have an Idea in which direction I can look, if you need further information just ask.

Thank you very much

My Hardware:
C2750D4I Asrock Board with 32 GB ECC RAM
8x6TB WD RED Hard Disks
Gigabit Lan ( the last link to raspberry pi2 is of course 100 mbit )
Network Cards (Onboard):
07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
08:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

Raspberry is using open elec 6.0.1
Freenas Version: FreeNAS-9.3-STABLE-201602031011
Not Virtualized

What I've already done:
- I double and triple checked all cablings and even changed the IP-Adresses Back to that the Raspberry is pulling the File from the QNAP ( which runs perfect then)
- I experimented with different CIFS Server maximum Protocol, from N1 to SMB3_00
- I experimentet with different Auxiliary parameters like socket options =TCP_NODELAY IPTOS_LOWDELAY
- I took the socket options from the QNAP smb.conf file socket options = TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=262144 SO_RCVBUF=131072
- I changed the port speed to 1000 FULL on the switch
- I analyzed the network traffic via port mirroring and the only real difference I saw was a single TCP retransmission that didn't exist when I used the QNAP
- As I'm using 2 different Networks (for ESXI 192.168.2.x, for Network 192.168.1.x) I temporarely also disabled the second card, just to be sure.
- I set the switch port to 100M / HALF DUPLEX and then it works without problems, but that can't be the solution.
- I increased the buffer size of the raspberry ( see below ) and that mitigated the problem, so its kinda half-solved for now :)

Additional information:
Code:
ifconfig:
igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
        ether d0:50:99:c0:ab:52
        inet 192.168.2.5 netmask 0xffffff00 broadcast 192.168.2.255
        nd6 options=9<PERFORMNUD,IFDISABLED>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
igb1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO>
        ether d0:50:99:c0:ab:53
        inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=9<PERFORMNUD,IFDISABLED>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
        nd6 options=9<PERFORMNUD,IFDISABLED>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Zpool status:
Code:
zpool status
  pool: VOL1
 state: ONLINE
  scan: scrub repaired 0 in 2h49m with 0 errors on Wed Mar  9 13:41:46 2016
config:

        NAME                                            STATE     READ WRITE CKSUM
        VOL1                                            ONLINE       0     0     0
          raidz2-0                                      ONLINE       0     0     0
            gptid/a672a7f0-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/a7922fc8-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/a8ae08fc-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/a9d6aedf-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/aaf0e30b-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/ac10aef6-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/ad2ed461-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0
            gptid/ae52864d-e4b4-11e5-88a3-d05099c0ab52  ONLINE       0     0     0

errors: No known data errors

  pool: freenas-boot
 state: ONLINE
  scan: scrub repaired 0 in 0h0m with 0 errors on Sat Mar 12 03:45:11 2016
config:

        NAME                                          STATE     READ WRITE CKSUM
        freenas-boot                                  ONLINE       0     0     0
          gptid/16fc3a13-c955-11e5-958a-d05099c0ab52  ONLINE       0     0     0

errors: No known data errors
 
Last edited:

Mirfster

Doesn't know what he's talking about
Joined
Oct 2, 2015
Messages
3,215

Morpheus187

Explorer
Joined
Mar 11, 2016
Messages
61
Hi

No the Nas is not virtualized, but I plan to use it as a datastore for vmwares. (not yet implemented)
 

Mirfster

Doesn't know what he's talking about
Joined
Oct 2, 2015
Messages
3,215
I set the switch port to 100M / HALF DUPLEX and then it works without problems, but that can't be the solution.
Out of curiosity, what speeds would you get if you bypassed the switch and direct connected to the Server? Wondering if there is something going on with auto-negotiation?
 

Morpheus187

Explorer
Joined
Mar 11, 2016
Messages
61
I as I don't have a long enough cable to do that I have exchanged the switch and got the same results.
But it seems i figured out a rapsberry side "fix" of the problem, I increased the receive buffer via this directive:
Code:
<network>
        <buffermode>1</buffermode>
        <cachemembuffersize>5242880</cachemembuffersize>
        <readbufferfactor>4.0</readbufferfactor>
        <curlclienttimeout>60</curlclienttimeout>
        <curllowspeedtime>20</curllowspeedtime>
    </network>


Now the video file is running fine. Its just very curious that it works with a QNAP without needing to increase buffer sizes but with FREENAS is doesn't work, for me it seems that there is some kind of slight different treatment of network or samba packets which causes this issues. Somehow the raspberry isn't getting a "constant" speed otherwise and it begins to stutter and so the buffer helps mitigate the problem.
 

Morpheus187

Explorer
Joined
Mar 11, 2016
Messages
61
For now it seems to work, but it still feels kinda wrong or strange for me. At least I think I can sleep a bit better now. Thanks for the feedback and help Mirfster :smile:
 
Status
Not open for further replies.
Top