Experimental Physics and Industrial Control System
We have a Motorola MVME 5500 CPU running Epics on VxWorks. It'sdoing
some cpu-intensive computations and runs about 37% idle. Our problem is
that this makes EPICS connectivity iffy, resulting in a timeout to a
client doing a caget (for example) about 20% of the time.
A large fraction (about half) of the used cpu time is spent in the Epics
cbLow task, processing genSub record routines which are processed based
on an epics "event" scan field (posted at about 1Hz). (see spy output below)
Is there an existing document/web page describing the duties and
relative priorities of the various Epics tasks somewhere? Which task(s)
are responsible for responding to a CA Client (the CAS-client tasks, I'm
guessing)?
Can I lower the priorty of the cbLow task (to below that of the
CAS-client tasks) and still expect
epics to work correctly? Why do the genSub event-driven records get
processed in cbLow? Is it because they are genSubs or because they are
event-driven?
It's a relatively new system and re-designing our software in light of
the cpu-usage is certainly possible, but we'd like to know more about
the epics priorities and how exactly a client gets a channel access
timeout before proceeding. We're running epics 3.14.8 on vxworks 6.1 if
it makes any difference.
Thanks for any help with the above questions or other suggestions!
Dennis
[email protected]
Attached below is spy() output from a typical session.
NAME ENTRY TID PRI total % (ticks) delta % (ticks)
-------- -------- ----- --- --------------- ---------------
tJobTask jobTask 261d110 0 0% ( 0) 0% ( 0)
tNbioLog 261fa20 0 0% ( 0) 0% ( 0)
tMeasure Measuremen 264b190 0 0% ( 178) 3% ( 18)
tExcTask excTask 261d730 1 0% ( 0) 0% ( 0)
tShell0 shellTask 27ff920 1 0% ( 0) 0% ( 0)
tShellRem1 shellTask 10baed20 1 0% ( 0) 0% ( 0)
tWdbTask wdbTask 263f010 3 0% ( 0) 0% ( 0)
tSpyTask spyComTask 17639870 5 1% ( 662) 1% ( 7)
tNetTask netTask 2623af0 50 0% ( 8) 0% ( 0)
tPortmapd portmapd 2637490 54 0% ( 0) 0% ( 0)
tTelnetd telnetd 26397f0 55 0% ( 0) 0% ( 0)
tTelnetOut_2 telnetOutT 301f140 55 0% ( 2) 0% ( 0)
tTelnetIn_26 telnetInTa 301f3c0 55 0% ( 0) 0% ( 0)
tBDEvent BackDoor:: 2677cb0 98 35% ( 18487) 34% ( 174)
tBDReply BackDoor:: 2671ce0 99 0% ( 1) 0% ( 0)
tBDTick BackDoor:: 30235d0 99 0% ( 0) 0% ( 0)
t1BackDoor TcpDaemonS 2647c70 99 0% ( 0) 0% ( 0)
t4BackDoor TcpDaemonS 1763c6a0 99 0% ( 0) 0% ( 0)
t5BackDoor TcpDaemonS 1763e240 99 0% ( 0) 0% ( 0)
tBackDoord TcpDaemonT 2679cd0 100 0% ( 0) 0% ( 0)
syncNTP d93a8f0 109 0% ( 1) 0% ( 0)
cbHigh d93a670 128 0% ( 0) 0% ( 0)
timerQueue c608dc0 129 0% ( 0) 0% ( 0)
scanOnce 108f73b0 129 0% ( 0) 0% ( 0)
scan0.1 109267a0 133 0% ( 0) 0% ( 0)
scan0.2 1091fde0 134 0% ( 0) 0% ( 0)
cbMedium 3035870 135 0% ( 0) 0% ( 0)
scan0.5 10919420 135 0% ( 0) 0% ( 0)
scan1 10912a60 136 0% ( 0) 0% ( 0)
scan2 1090c0a0 137 0% ( 3) 0% ( 0)
scan5 109056e0 138 0% ( 0) 0% ( 0)
scan10 108fed20 139 0% ( 0) 0% ( 0)
cbLow d80c9a0 140 22% ( 11844) 23% ( 119)
dbCaLink d93c5f0 149 0% ( 0) 0% ( 0)
poolPoll 3027b10 149 0% ( 0) 0% ( 0)
CAS-TCP 109377c0 181 0% ( 0) 0% ( 0)
CAS-beacon d80bc10 182 0% ( 0) 0% ( 0)
CAS-UDP 264d010 183 0% ( 7) 0% ( 0)
errlog d92a080 189 0% ( 1) 0% ( 0)
taskwd d8006e0 189 0% ( 0) 0% ( 0)
tLogTask logTask 261dae0 250 0% ( 0) 0% ( 0)
KERNEL 0% ( 15) 0% ( 0)
INTERRUPT 0% ( 0) 0% ( 0)
IDLE 36% ( 18686) 37% ( 188)
TOTAL 94% ( 51638) 98% ( 506)
Typical epics task priorities are shown below:
tWdbTask wdbTask f24b590 3 PEND 22bed8 f24b460
0 0
tKdbDaq KdbDaqDoneTa f1425d0 5 PEND 22bed8 f1424f0
3d0002 0
tNetTask netTask f282ac0 50 PEND 22bed8 f2829d0
41 0
tPortmapd portmapd f251ca0 54 PEND 22bed8 f251a40
3d0002 0
tTelnetd telnetd f24edc0 55 PEND 22bed8 f24ec50
360003 0
tTelnetOut_telnetOutTas ead4e70 55 READY 22bed8 ead4b50
0 0
tTelnetIn_etelnetInTask fffec50 55 READY 22bd24 fffe8d0
0 0
tBDEvntHdlrEventHandler f15f2d0 98 PEND 2381a8 f15f190
0 0
tBDTick DefaultBackD f1eb4e0 99 DELAY 231158 f1eb430
0 1
tBDRplyHdlrReplyHandler f1e72c0 99 PEND 2381a8 f1e7190
0 0
tBDd ServrDaemon_ f15b0b0 100 PEND 22bed8 f15ae70
0 0
syncNTP ee8658c f0400e0 109 DELAY 231158 f03ff60
3d0002 266
cbHigh ee8658c f0458f0 128 PEND 22bed8 f0457c0
0 0
timerQueue ee8658c f059830 129 PEND+T 22bed8 f0593a0
0 2055764176
scanOnce ee8658c efc95f0 129 PEND 22bed8 efc94e0
0 0
scan0.1 ee8658c ef9e090 133 DELAY 231158 ef9df30
0 2
scan0.2 ee8658c efa3a20 134 DELAY 231158 efa38c0
0 8
cbMedium ee8658c f04d060 135 PEND 22bed8 f04cf30
0 0
scan0.5 ee8658c efa93b0 135 DELAY 231158 efa9250
0 4
scan1 ee8658c efaed40 136 DELAY 231158 efaebe0
0 12
scan2 ee8658c efb46d0 137 DELAY 231158 efb4570
0 74
scan5 ee8658c efba060 138 DELAY 231158 efb9f00
0 259
scan10 ee8658c efbf9f0 139 DELAY 231158 efbf890
0 558
cbLow ee8658c f0547d0 140 PEND 22bed8 f0546a0
0 0
CAC-UDP ee8658c ef78680 147 PEND 22bed8 ef780a0
0 0
CAC-UDP ee8658c eba6d20 147 PEND 22bed8 eba6740
0 0
timerQueue ee8658c ef8c090 148 PEND+T 22bed8 ef8bc00
3d0004 248
CAC-TCP-senee8658c ef406c0 148 PEND 22bed8 ef40020
0 0
seqAux ee8658c ecd91b0 148 DELAY 231158 ecd8db0
0 82
CAC-event ee8658c ecd5d50 148 PEND 22bed8 ecd5c20
0 0
timerQueue ee8658c ebba2f0 148 PEND+T 22bed8 ebb9e60
3d0004 584
CAC-TCP-senee8658c eb796b0 148 PEND 22bed8 eb79010
0 0
dbCaLink ee8658c f03df80 149 PEND 22bed8 f03de50
0 0
poolPoll ee8658c ef29fe0 149 DELAY 231158 ef29eb0
0 49
coupler ee8658c eee0630 149 PEND+T 22bed8 eee0440
3d0002 200
CAC-TCP-recee8658c ef45ed0 150 PEND 22bed8 ef45440
0 0
CAC-TCP-recee8658c eb7eec0 150 PEND 22bed8 eb7e430
0 0
CAS-client ee8658c eada680 179 PEND 22bed8 eada3d0
0 0
CAS-event ee8658c ef03aa0 180 PEND 22bed8 ef03970
0 0
CAS-TCP ee8658c ef33940 181 PEND 22bed8 ef33660
0 0
CAS-beacon ee8658c ef30160 182 DELAY 231158 ef2fe50
0 372
CAS-UDP ee8658c ef2d0e0 183 PEND 22bed8 ef2cd90
0 0
errlog ee8658c f074760 189 PEND 22bed8 f074630
3d0002 0
taskwd ee8658c f05b990 189 DELAY 231158 f05b7d0
0 319
ipToAsciiPree8658c ef8e770 189 PEND 22bed8 ef8e2d0
0 0
CAC-repeateee8658c ef74160 189 PEND 22bed8 ef73e70
16 0
- Replies:
- Re: task priorities, busy cpu, and timeout Andrew Johnson
- Navigate by Date:
- Prev:
Re: Setting an IOC clock from the vxWorks shell Ralph Lange
- Next:
ca_sg_put problem with DISP=1 Dirk Zimoch
- Index:
1994
1995
1996
1997
1998
1999
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:
Re: Setting an IOC clock from the vxWorks shell Ralph Lange
- Next:
Re: task priorities, busy cpu, and timeout Andrew Johnson
- Index:
1994
1995
1996
1997
1998
1999
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