Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#71 closed defect (fixed)

Performance of over a (Open)VPN is terribly slow

Reported by: herwigb Owned by:
Priority: critical Milestone: Samba Server for eCS (OS/2) 1.0.1
Component: Samba Client Plugin Version: 3.0.31
Keywords: VPN speed 100% CPU load Cc: herwig.bauernfeind@…

Description

When running Samba connections over a VPN connection (using OpenVPN for OS/2 by Pavel Shtemenko from hobbes on both sides), transfer speed is really slow.

The tests were done on the same connection within 10 minutes:

  • Transfer speed using Netdrive/ndpsmb: 1,5 to 3,0 KB/s
  • Transfer speed using smbclient.exe: 30,0 to 50,0 KB/s
  • Transfer speed using FTP: 30,0 to 50,0 KB/s

smbclient.exe is Version 3.0.33 (but that does not matter most likely). I will attach logfiles later.

Change History (7)

comment:1 Changed 10 years ago by herwigb

  • Keywords 100% CPU load added
  • Priority changed from major to critical

Further investigation reveals:

  1. Problem occurs when writing to the share over VPN, not when reading.
  2. Server jumps to 100% CPU usage as soon as the first bytes are written, which explains why transfer is so slow.
  3. Tested Samba Server Version 3.0.31.

comment:2 Changed 10 years ago by herwigb

  • Keywords plugin removed
  • Milestone changed from Netdrive SMB Client plugin 1.5 beta 1 to Samba Server for OS/2 1.0.1
  • Version Netdrive SMB Client plugin 1.5 alpha 1 deleted

The above explorations suggest a different source (server not client!)

comment:3 Changed 10 years ago by herwigb

  • Summary changed from Performance of ndpsmb over a (Open)VPN is terribly slow to Performance of over a (Open)VPN is terribly slow

comment:4 Changed 10 years ago by herwigb

Works with the following incarnation of OS2_EAGAIN_RETRY_CHECK macro (both read and write):

#define OS2_EAGAIN_RETRY_INIT time_t t1 = time(NULL); #define OS2_EAGAIN_RETRY_CHECK \

if (ret == -1) { \

DEBUG(10,("sys_read: op failed, errno: %d,%s\n", errno, strerror(errno))); \

} \ if (ret==-1 && errno==EAGAIN) { \

DosSleep?(100); \ if (time(NULL) - t1 > 60) \

break; \

errno = EINTR; \

}

#else #define OS2_EAGAIN_RETRY_INIT #define OS2_EAGAIN_RETRY_CHECK #endif

comment:5 Changed 10 years ago by herwigb

This Ticket is closely related to Ticket #69

comment:6 Changed 10 years ago by diver

  • Resolution set to fixed
  • Status changed from new to closed

Changeset http://svn.netlabs.org/samba/changeset/170 fixes this issue.

comment:7 Changed 10 years ago by herwigb

  • Version set to 3.0.31
Note: See TracTickets for help on using tickets.