EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: CA on cygwin port is slower than native windows port
From: Eric Norum <[email protected]>
To: Jeff Hill <[email protected]>
Cc: [email protected]
Date: Fri, 12 Jan 2007 11:45:45 -0600
There has got to be something wrong in the code somewhere to make the 'synch get' operations 50 times slower (!!!) than the native routines. The question is whether the problem is in the cygwin wrappers or in the posix implementation of some EPICS operating-system-dependent routine.......

On Jan 11, 2007, at 7:26 PM, Jeff Hill wrote:


During testing this evening I noticed that CA on cygwin is substantially slower than CA on native windows. The two tests were running with both the client and the server on the same seven year old PC with two processors. I assume that this is because of overhead either in the cygwin socket layers
or in the cygwin posix layers?

Native windows port (EPICS_HOST_ARCH=WIN32-x86):

D:\Users\hill\R3.14.dll_hell_fix\epics\base>catime joh:bill
Testing with 10000 channels named joh:bill
channel connect test
Elapsed Per Item = 0.00001945 sec, 51408.0 Items per sec, 27.1 Mbps
Search tries per chan - mean=1.018600 std dev=0.135108 min=1.000000
max=2.000000

channel name=joh:bill, native type=6, native count=1
        pend event test
Elapsed Per Item =   0.00000151 sec,   663956.0 Items per sec
float test
        async put test
Elapsed Per Item = 0.00000161 sec, 620419.6 Items per sec, 84.4 Mbps
        async get test
Elapsed Per Item = 0.00000229 sec, 437532.0 Items per sec, 115.5 Mbps
        synch get test
Elapsed Per Item = 0.00020621 sec, 4849.3 Items per sec, 1.3 Mbps
double test
        async put test
Elapsed Per Item = 0.00000176 sec, 567799.5 Items per sec, 77.2 Mbps
        async get test
Elapsed Per Item = 0.00000226 sec, 442325.5 Items per sec, 116.8 Mbps
        synch get test
Elapsed Per Item = 0.00020381 sec, 4906.4 Items per sec, 1.3 Mbps
string test
        async put test
Elapsed Per Item = 0.00000306 sec, 327315.3 Items per sec, 55.0 Mbps
        async get test
Elapsed Per Item = 0.00000418 sec, 239063.9 Items per sec, 70.8 Mbps
        synch get test
Elapsed Per Item = 0.00021528 sec, 4645.1 Items per sec, 1.4 Mbps
integer test
        async put test
Elapsed Per Item = 0.00000159 sec, 629055.5 Items per sec, 85.6 Mbps
        async get test
Elapsed Per Item = 0.00000217 sec, 459916.1 Items per sec, 121.4 Mbps
        synch get test
Elapsed Per Item = 0.00021208 sec, 4715.2 Items per sec, 1.2 Mbps
round trip jitter test
Round trip get delays - mean=0.000207 sec, std dev=0.000051 sec,
min=0.000110 se
c max=0.002721 sec
free test
Elapsed Per Item = 0.00000120 sec, 834962.2 Items per sec, 0.0 Mbps

Cygwin port (EPICS_HOST_ARCH=cygwin-x86):

/cygdrive/d/users/hill/R3.14.dll_hell_fix/epics/base$ catime joh:bill
Testing with 10000 channels named joh:bill
channel connect test
epicsSocketEnablePortUseForDatagramFanout: unable to set SO_REUSEADDR?
Elapsed Per Item = 0.00006680 sec, 14970.1 Items per sec, 7.9 Mbps
Search tries per chan - mean=1.018600 std dev=0.135108 min=1.000000
max=2.000000

channel name=joh:bill, native type=6, native count=1
        pend event test
Elapsed Per Item =   0.00000800 sec,   125000.0 Items per sec
float test
        async put test
Elapsed Per Item = 0.00000414 sec, 241545.9 Items per sec, 32.9 Mbps
        async get test
Elapsed Per Item = 0.00000922 sec, 108459.9 Items per sec, 28.6 Mbps
        synch get test
Elapsed Per Item = 0.01063000 sec, 94.1 Items per sec, 0.0 Mbps
double test
        async put test
Elapsed Per Item = 0.00000425 sec, 235294.1 Items per sec, 32.0 Mbps
        async get test
Elapsed Per Item = 0.00000934 sec, 107066.4 Items per sec, 28.3 Mbps
        synch get test
Elapsed Per Item = 0.01063000 sec, 94.1 Items per sec, 0.0 Mbps
string test
        async put test
Elapsed Per Item = 0.00000539 sec, 185528.8 Items per sec, 31.2 Mbps
        async get test
Elapsed Per Item = 0.00000958 sec, 104384.1 Items per sec, 30.9 Mbps
        synch get test
Elapsed Per Item = 0.01063000 sec, 94.1 Items per sec, 0.0 Mbps
integer test
        async put test
Elapsed Per Item = 0.00000422 sec, 236966.8 Items per sec, 32.2 Mbps
        async get test
Elapsed Per Item = 0.00000944 sec, 105932.2 Items per sec, 28.0 Mbps
        synch get test
Elapsed Per Item = 0.01053000 sec, 95.0 Items per sec, 0.0 Mbps
round trip jitter test
Round trip get delays - mean=0.010470 sec, std dev=0.001887 sec,
min=0.000000 se
c max=0.040000 sec
free test
Elapsed Per Item = 0.00000490 sec, 204081.6 Items per sec, 0.0 Mbps

Jeff
__________________________________________________________
Jeffrey O. Hill               Mail         [email protected]
LANL MS H820                  Voice        505 665 1831
Los Alamos NM 87545 USA       Fax          505 665 5107




--
Eric Norum <[email protected]>
Advanced Photon Source
Argonne National Laboratory
(630) 252-4793



References:
CA on cygwin port is slower than native windows port Jeff Hill

Navigate by Date:
Prev: Re: drvTS - where do you stand on this? Andrew Johnson
Next: AppDevGuide not up-to-date on devLib Benjamin Franksen
Index: 2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: CA on cygwin port is slower than native windows port Jeff Hill
Next: RE: vxDevWriteProbe does read Peng, Sheng
Index: 2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·