caproto.server.stats.PeriodicStatusHelper¶
- class caproto.server.stats.PeriodicStatusHelper(*args, **kwargs)[source]¶
An IocStats-like tool for caproto IOCs. Includes values which update on a periodic basis (
update_period
, PVUPD_TIME
).¶ Attribute
Suffix
Docs
Type
Notes
Alarm Group
access
ACCESS
CA Security access level to this IOC
ENUM (
mbbo
)ca_client_count
CA_CLNT_CNT
Number of CA clients [not implemented]
int (
longin
)Read-only
ca_connection_count
CA_CONN_CNT
Number of CA Connections [not implemented]
int (
longin
)Read-only
fd_count
FD_CNT
Allocated File Descriptors
int (
ai
)Read-only
fd_free
FD_FREE
Available FDs
int (
calc
)Read-only
fd_max
FD_MAX
Max File Descriptors
int (
ai
)Read-only
heartbeat
HEARTBEAT
1 Hz counter since startup
int (
calcout
)Read-only
ioc_cpu_load
IOC_CPU_LOAD
float (
ai
)Read-only
mem_free
MEM_FREE
Memory free (including swap).
int (
ai
)Read-only
mem_max
MEM_MAX
int (
ai
)Read-only
mem_used
MEM_USED
Memory used.
int (
ai
)Read-only
num_threads
NumThreads
Number of threads in use
int (
longin
)Read-only
record_count
RECORD_CNT
Number of records
int (
ai
)Read-only
start_count
START_CNT
Startup count, if autosave is working
int (
calcout
)Read-only Startup
start_tod
STARTTOD
Time and date of startup
str (
stringin
)Read-only Length(100) Startup
susp_task_count
SUSP_TASK_CNT
Number of Suspended Tasks [not implemented]
int (
longin
)Read-only
sys_cpu_load
SYS_CPU_LOAD
CPU load
float (
ai
)Read-only
time_of_day
TOD
Current time and date
str (
stringin
)Read-only Length(100)
update_period
UPD_TIME
Basic stats update rate
float (
ao
)Startup
uptime
UPTIME
Elapsed time since start
int (
longin
)Read-only
Methods
group_read
(instance)Generic read called for channels without get defined
group_write
(instance, value)Generic write called for channels without put defined
Attributes
default_values
type_map
type_map_read_only
pvdb
attr_pvdb
attr_to_pvname
groups
pvproperty methods
- start_count.startup(self, instance, async_lib)¶
253@start_count.startup 254async def start_count(self, instance, async_lib): 255 # Give autosave some time to load 256 await async_lib.library.sleep(3) 257 await self.start_count.write(value=self.start_count.value + 1)
- start_tod.startup(self, instance, async_lib)¶
213@start_tod.startup 214async def start_tod(self, instance, async_lib): 215 await self.start_tod.write(value=str(datetime.datetime.now()))
- update_period.startup(self, instance, async_lib)¶
Source code: update_period.startup
423 @update_period.startup 424 async def update_period(self, instance, async_lib): 425 self._startup_time = datetime.datetime.now() 426 if resource is not None: 427 try: 428 soft_limit, hard = resource.getrlimit(resource.RLIMIT_NOFILE) 429 await self.fd_max.write(value=soft_limit) 430 except Exception: 431 self.log.warning('Failed to get maximum file descriptors') 432 433 while True: 434 try: 435 await self._update() 436 except Exception as ex: 437 self.log.warning('Status update failure: %s', ex) 438 await async_lib.library.sleep(self.update_period.value)