EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Problem with caget on 3.14.12.1?
From: "Mark Rivers" <[email protected]>
To: <[email protected]>
Date: Tue, 7 Jun 2011 17:26:51 -0500

Folsk,

 

I am trying to read a large array from a VME IOC using caget.  The array is 500000 elements, 32-bit integers.  EPICS_CA_MAX_ARRAY_BYTES is set to 2000000 on the IOC, which is “just large enough” to read the entire array.  EPICS_CA_MAX_ARRAY_BYTES is set to 20000000 (10 times larger than large enough) on the Linux client.

 

The IOC is running 3.14.12.1.

 

Here is the output of caget from a Linux client with EPICS 3.14.10, 3.14.11, and 3.14.12.1 when requesting 499000 elements, (1000 fewer than maximum) which should fit in EPICS_CA_MAX_ARRAY_BYTES.

 

3.14.10:

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.10/bin/linux-x86/caget -#499000 -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:03:37 CDT 2011

Tue Jun  7 17:03:38 CDT 2011

 

3.14.11:

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.11/bin/linux-x86/caget -#499000 -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:03:55 CDT 2011

Tue Jun  7 17:03:56 CDT 2011

 

3.14.12.1:

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.12.1/bin/linux-x86/caget -#499000 -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:04:07 CDT 2011

CA.Client.Exception...............................................

    Warning: "The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES"

    Context: "op=0, channel=SIS:3820:mca1, type=DBR_TIME_LONG, count=500000, ctx="server unable to load read (or subscription update) response into protocol buffer PV="SIS:3820:mca1" max bytes=2000024""

    Source File: ../getCopy.cpp line 92

    Current Time: Tue Jun 07 2011 17:04:07.629564143

..................................................................

 

 

So on 3.14.10 and 3.14.11 it works as expected, caget is requesting fewer than the number of bytes that EPICS_CA_MAX_ARRAY_BYTES will allow, and it succeeds.  But it fails on 3.14.12.1.  The error message says count=500000.  Is it trying to read all 500000 rather than the number requested?

 

The same error happens on 3.14.12.1 even if I try to only read 100 elements:

 

corvette:mca/iocBoot/iocVxWorks>/usr/local/epics/base-3.14.12.1/bin/linux-x86/caget -#100 -w20 SIS:3820:mca1

CA.Client.Exception...............................................

    Warning: "The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES"

    Context: "op=0, channel=SIS:3820:mca1, type=DBR_TIME_LONG, count=500000, ctx="server unable to load read (or subscription update) response into protocol buffer PV="SIS:3820:mca1" max bytes=2000024""

    Source File: ../getCopy.cpp line 92

    Current Time: Tue Jun 07 2011 17:24:56.617989921

..................................................................

 

 

 

I then increased EPICS_CA_MAX_ARRAY_BYTES on the IOC to 2000200, i.e. 200 more than the theoretical minimum number.  I then did a caget of the entire array, and it worked fine on all 3 versions of EPICS base.

 

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.10/bin/linux-x86/caget -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:16:25 CDT 2011

Tue Jun  7 17:16:26 CDT 2011

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.11/bin/linux-x86/caget -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:16:44 CDT 2011

Tue Jun  7 17:16:45 CDT 2011

corvette:mca/iocBoot/iocVxWorks>date ; /usr/local/epics/base-3.14.12.1/bin/linux-x86/caget -w20 SIS:3820:mca1 > temp.out ; date

Tue Jun  7 17:16:55 CDT 2011

Tue Jun  7 17:16:56 CDT 2011

 

 

So it looks like there is something wrong with 3.14.12.1 when EPICS_CA_MAX_ARRAY_BYTES is not large enough for the entire array, even when many fewer elements are being requested.

 

Mark

 

 

 


Replies:
RE: Problem with caget on 3.14.12.1? Jeff Hill

Navigate by Date:
Prev: Re: Dynamic images in BOY Paweł Prędki
Next: general purpose callback tasks : callbackRequest() John Dobbins
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: "make" for Windows 7 64-bit Andrew Johnson
Next: RE: Problem with caget on 3.14.12.1? Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·