Observability tooling for long-running analysis
Alexandre Janniaux - Juin 2025
Or printf, and build understanding of what might be the root cause.
Build understanding in code via a scenario while testing an hypothesis.
Try to find any root cause because there is no ideas of why it fails yet.
[1]: https://code.videolan.org/videolan/vlc/-/merge_requests/365
vlc_tracer_Trace(tracer,
VLC_TRACE("type", "DEMUX"),
VLC_TRACE("id", "input"),
VLC_TRACE_TICK_NS("buffering", -i_late),
VLC_TRACE_END);From Nicolas Le Quec, 5 juillet 2021
Tracer modules can be implemented
Core API to forward tracer to VLC Objects
JSON tracer implementation
house-made timeseries visualizer reading JSON traces
Python mathplotlib to visualize json traces
CFO
Time series aggregator
time series database, handling tags and metrics
Log aggregator and metadata indexer
sysadmin tool to monitor server nodes
docker compose up
firefox http://localhost:3000/
export VLC_TELEGRAF_ENDPOINT="tcp://localhost:8094"
vlc --tracer=telegrafClock interpolate with
y = coeff * t + offset
This tracks the two parameters over time.
Analyze asynchronous issues in the clock design.
Each line is a track or input.
Each number matches with a given clock context.
Logging is synchronized with the selected time window.
Provide additional event feedback on what happened.
Input buffering metrics shows internal state of the input clock.
Highlights fluttering in the input, and long-run input drift issue.
Reports the "drift" value for each clock/track whenever they get updated.
Tracks avsync issue, long-run drift, resampling, etc...
Tracks the reporting of audio latency, specifically for coreaudio here.
Useful in testing variation of output devices and its consequences.
Tracks how much buffer if available in the audio output, after audio_Play().
When underrun happens, shows how much was missing on the right.
from(bucket: v.defaultBucket)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "measurement" and r.id == "coreaudio")
|> yield(name: "mean")Analyze irregularities in the reporting of VSYNC (SK branch).
Gives hints about frame drops and is compatible with alerts.
Shows a bar when a frame is drop and set the colour/values to how much it was late.
Your mileage may vary.
– Famous quote
Symptoms:
- PCR gap, ES_OUT_RESET_PCR()
- Re-buffering at beginning
- Triggers clock context bug /o\
Symptoms:
- Playback way to late/early
- Playback, then resampling,
then silence
Symptoms:
- Lipsync issue, audio and video out of sync multiple secs
- Clock confidently report drift
value is 0ms drift /o\
Symptoms:
- Video playback getting slower
- Audio playback gets out of sync quickly