EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: Portable channel access server on linux
From: john sinclair <[email protected]>
To: tech talk <[email protected]>
Date: Mon, 8 Jun 1998 14:53:00 -0400 (EDT)
I have started testing the portable channel access server on linux.

Red Hat Linux 5.0 (patches are current)
Epics 3.13 beta 11

  program 1: CAS with 500 pv's

  program 2: simulated I/O scanner with approx 1000 puts per second

  program 3: medm

    One display: 3 bar monitors, 6 text monitors, 1 meter

  program 4: Dummy event receiver

    500 events added

    ======================================================================

    event handler: (procedure is ridiculous; objective is to produce activity)

    static int count = 0;

    count++
    remove buffer from free queue
    copy count to buffer
    insert buffer into active queue
    if there is only one node on active queue then signal event thread

    ======================================================================

    event thread:

      lock thread preemption
      get chid for "num_events" as id
      unlock thread preemption

      while ( 1 ) {

        while ( active queue is not empty ) {
          remove buffer from active queue
          value = count field of buffer
          lock thread preemption
          ca_put( DBR_LONG, id, &value );
          unlock thread preemption
          insert buffer into free queue
        }

        wait for signal

      }

    ======================================================================

    main thread:

    get all chids and add events

    create event thread

    while ( 1 ) {

      lock thread preemption
      ca_pend_io( 5.0 );
      ca_pend_event( 0.001 );
      unlock thread preemption

      delay 100 ms

    }

    ======================================================================


Everything has gone well for about 72 hours except for Medm. Medm runs
fine and then, at some (apparently) random time, begins consuming virtual
memory at a rate of about 1K bytes per second until all is consumed. There
is no noticeable change in behavior or performance when Medm gets into this
state (until the system starts swapping).

I realize that the problem could be in the linux kernel, X libs, or C libs. I
will try to build the test on another platform. Any comments/suggestions
are appreciated.


John Sinclair
[email protected]
Oak Ridge National Lab
423-576-6362   423-574-1268 (fax)


Navigate by Date:
Prev: Color rules john sinclair
Next: Marty Kraimers UC Distinguished Performance Award Bill McDowell
Index: 1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Color rules john sinclair
Next: Re: Portable channel access server on linux Garrett D. Rinehart
Index: 1994  1995  1996  1997  <19981999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·