MCPcopy Create free account
hub / github.com/LucaCanali/PyLatencyMap / compute_deltas

Method compute_deltas

LatencyMap.py:250–282  ·  view source on GitHub ↗
(self, previous: 'LatencyRecord')

Source from the content-addressed store, hash-verified

248 g_params.max_latency_bkt = g_params.min_latency_bkt + 11
249
250 def compute_deltas(self, previous: 'LatencyRecord') -> None:
251 # timestamp delta (usec); convert to seconds for rates
252 self.delta_time = self.data.get('timestamp', 0) - previous.data.get('timestamp', 0)
253 time_factor = self.delta_time / 1e6 if self.delta_time > 0 else 1.0
254
255 for bucket in list(self.data.keys()):
256 if bucket == 'timestamp':
257 continue
258
259 write_bucket = bucket
260 if bucket > g_params.max_latency_bkt:
261 write_bucket = g_params.max_latency_bkt
262 if bucket < g_params.min_latency_bkt:
263 write_bucket = g_params.min_latency_bkt
264
265 delta_count = self.data.get(bucket, 0) - previous.data.get(bucket, 0)
266 # Frequency: events per second
267 self.frequency_histogram[write_bucket] += (delta_count / time_factor)
268
269 # Intensity: approximate time waited per second
270 # Oracle histograms bucket differently vs BPF/SystemTap/DTrace (factor-of-2 difference).
271 # Oracle: ~ 3/4 * bucket_value * waits; ST/DTrace: ~ 3/2 * bucket_value * waits
272 if self.data_source == 'oracle':
273 self.intensity_histogram[write_bucket] += (0.75 * delta_count * (2 ** bucket)) / time_factor
274 elif self.data_source in ('bpf', 'systemtap', 'dtrace'):
275 self.intensity_histogram[write_bucket] += (1.5 * delta_count * (2 ** bucket)) / time_factor
276 else:
277 raise ValueError("Invalid datasource. Use one of: bpf, systemtap, dtrace, oracle.")
278
279 self.max_frequency = max(self.frequency_histogram[g_params.min_latency_bkt:g_params.max_latency_bkt + 1])
280 self.sum_frequency = sum(self.frequency_histogram[g_params.min_latency_bkt:g_params.max_latency_bkt + 1])
281 self.max_intensity = max(self.intensity_histogram[g_params.min_latency_bkt:g_params.max_latency_bkt + 1])
282 self.sum_intensity = sum(self.intensity_histogram[g_params.min_latency_bkt:g_params.max_latency_bkt + 1])
283
284
285class ArrayOfLatencyRecords:

Callers 1

mainFunction · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected