use @pony_scheduler_stats[_SchedulerStats]()
primitive SchedulerStats
"""
Provides functions that expose statistics about the current scheduler. All
methods will return '0' if the runtime used the program wasn't compiled with
runtime statistics turned on.
"""
fun total_mem_allocated(auth: SchedulerStatsAuth): I64 =>
"""
Returns the total memory currently allocated by the current
scheduler thread (note: this is an approximate value and it can be
negative as it represents only a partial view across all the
scheduler threads)
"""
ifdef runtimestats then
@pony_scheduler_stats().mem_allocated +
@pony_scheduler_stats().mem_allocated_actors
else 0
end
fun total_mem_used(auth: SchedulerStatsAuth): I64 =>
"""
Returns the total memory currently used by the current scheduler
thread (note: this is an approximate value and it can be negative
as it represents only a partial view across all the scheduler
threads)
"""
ifdef runtimestats then
@pony_scheduler_stats().mem_used +
@pony_scheduler_stats().mem_used_actors
else 0
end
fun created_actors_counter(auth: SchedulerStatsAuth): USize =>
"""
Returns the number of actors created by the current schedule
thread (note: this is an approximate value and it can be negative
as it represents only a partial view across all the scheduler
threads)
"""
ifdef runtimestats then
@pony_scheduler_stats().created_actors_counter
else 0
end
fun destroyed_actors_counter(auth: SchedulerStatsAuth): USize =>
"""
Returns the number of actors destroyed by the current schedule
thread
"""
ifdef runtimestats then
@pony_scheduler_stats().destroyed_actors_counter
else 0
end
fun actor_app_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used to
process actor app messages
"""
ifdef runtimestats then
@pony_scheduler_stats().actor_app_cpu
else 0
end
fun actor_gc_mark_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used for mark
phase to garbage collect actor heaps
"""
ifdef runtimestats then
@pony_scheduler_stats().actor_gc_mark_cpu
else 0
end
fun actor_gc_sweep_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used for sweep
phase to garbage collect actor heaps
"""
ifdef runtimestats then
@pony_scheduler_stats().actor_gc_sweep_cpu
else 0
end
fun actor_system_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used to
process actor system messages
"""
ifdef runtimestats then
@pony_scheduler_stats().actor_system_cpu
else 0
end
fun msg_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used to
process scheduler system messages
"""
ifdef runtimestats then
@pony_scheduler_stats().msg_cpu
else 0
end
fun misc_cpu(auth: SchedulerStatsAuth): USize =>
"""
Returns the amount of cpu the current scheduler has used while
waiting to do work
"""
ifdef runtimestats then
@pony_scheduler_stats().misc_cpu
else 0
end
fun mem_used_inflight_messages(auth: SchedulerStatsAuth): I64 =>
"""
Returns the number of memory used by inflight messages created by
the current scheduler thread (note: this is an approximate value
and it can be negative if the current thread receives more messages
than it sends)
"""
ifdef runtimestatsmessages then
@pony_scheduler_stats().mem_used_inflight_messages
else 0
end
fun mem_allocated_inflight_messages(auth: SchedulerStatsAuth): I64 =>
"""
Returns the number of memory allocated by inflight messages
created by the current scheduler thread (note: this is an
approximate value and it can be negative if the current thread
receives more messages than it sends)
"""
ifdef runtimestatsmessages then
@pony_scheduler_stats().mem_allocated_inflight_messages
else 0
end
fun num_inflight_messages(auth: SchedulerStatsAuth): I64 =>
"""
Returns the number of inflight messages by the current scheduler
thread (note: this is an approximate value and it can be negative
if the current thread receives more messages than it sends)
"""
ifdef runtimestatsmessages then
@pony_scheduler_stats().num_inflight_messages
else 0
end