Difference between revisions of "StatsSystem"

From VideoLAN Wiki
Jump to navigation Jump to search
 
Line 11: Line 11:
 
* per-stream/global decoded, dropped frames
 
* per-stream/global decoded, dropped frames
 
* per-stream/global packets read/errors
 
* per-stream/global packets read/errors
* per-stream/global packets sent/errors (if sout)
+
* per-stream/global packets/bytes sent/errors (if sout)
* stats about httpd/vod, per access
+
* stats about httpd/vod, per request
  
 
Each thing could be stored as average, max, counter, ...
 
Each thing could be stored as average, max, counter, ...
Line 32: Line 32:
 
=== Counters ===
 
=== Counters ===
  
 +
<pre>
 
counter_sample_t
 
counter_sample_t
 
{
 
{
Line 44: Line 45:
 
   pp_samples / i_samples
 
   pp_samples / i_samples
 
}
 
}
 +
</pre>
  
Name contains the originating object id, like "267.frames_decoded"  
+
Name contains the originating object id, like "267.frames_displayed"  
 +
 
 +
How to separate by http request ? "httpd_object_id.request_id.XXX" ?
  
 
=== Timing ===
 
=== Timing ===
  
 +
<pre>
 
timing_elem_t
 
timing_elem_t
 
{
 
{
Line 61: Line 66:
 
   start_time   
 
   start_time   
 
}
 
}
 +
</pre>
  
 
== Reporting ==
 
== Reporting ==

Revision as of 14:13, 15 December 2005

Requirements

Goal

Central system for storing statistics and timings

Stored data

What we might want to collect:

  • per-stream/global decoded, dropped frames
  • per-stream/global packets read/errors
  • per-stream/global packets/bytes sent/errors (if sout)
  • stats about httpd/vod, per request

Each thing could be stored as average, max, counter, ...

Data access

  • Access stats from the GUI (simple)
  • Dump HTTP server access data
  • Dump some raw access data to output

Design

Data storage

Stats object

Stored as a singleton in p_libvlc

Counters

counter_sample_t
{
   value
   date
}

counter_elem_t
{
   name
   type
   pp_samples / i_samples
}

Name contains the originating object id, like "267.frames_displayed"

How to separate by http request ? "httpd_object_id.request_id.XXX" ?

Timing

timing_elem_t
{
   name

   last_time,

   total_time,
   total_samples,

   running,
   start_time   
}

Reporting

  • In GUI:
    • Integrated in streams and media information for relevant items (make it available for VLM streams too)
    • Where to put global data ?
  • Data log:
    • Make global options to enable and driver logger module
    • Add some logging facility to httpd
    • RRD output (muwahahahaha)