Skip to content
Snippets Groups Projects
Commit 425e605f authored by Thomas Juerges's avatar Thomas Juerges
Browse files

L2SS-245: add convenience script to compute polling stats

parent 254f82c3
No related branches found
No related tags found
1 merge request!96L2SS-245: "Investigation monitoring load"
import numpy
import tango
def attribute_polling_stats(dp: tango._tango.DeviceProxy = None, iterations: int = 10, polling_time: float = 1.0, quiet = False):
if dp is not None:
print('Will sample the device server\'s polling time {} times with a pause of {}s between each sampling.'.format(iterations, polling_time))
else:
print('A DeviceProxy object is needed!')
return
import numpy
from time import sleep
polling_durations = []
polling_delays = []
value = numpy.double(0)
iterations_left = iterations
while iterations_left > 0:
iterations_left -= 1
string = dp.polling_status()[0].split('\n')
polling_duration = numpy.double(string[3].split('=')[-1].strip()) / 1e3
polling_delay = numpy.double(string[5].split('=')[-1].split(',')[0].strip()) / 1e3
polling_durations.append(polling_duration)
polling_delays.append(polling_delay)
if not quiet:
print('Iteration #{}, {} iterations left, polling duration = {}s, polling delay = {}s.'.format(iterations - iterations_left, iterations_left, polling_duration, polling_delay))
sleep(polling_time)
durations = numpy.array(polling_durations)
delays = numpy.array(polling_delays)
def compute_and_print(result):
min = numpy.min(result)
max = numpy.max(result)
median = numpy.median(result)
mean = numpy.mean(result)
std = numpy.std(result)
print("\tmin = {}[s]\n\tmax = {}[s]\n\tmedian = {}[s]\n\tmean = {}[s]\n\tstddev = {}[s]".format(min, max, median, mean, std))
print("\n\titerations = {}\n\n\tPolling duration".format(iterations))
compute_and_print(durations)
print("\n\tPolling delay")
compute_and_print(delays)
return (durations, delays)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment