UDP based profiling

From Wikitech
(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
 
== What and Where ==
 
== What and Where ==
# $wgProfiler = new ProfilingSimpleUDP; (in index or Settings)
+
* $wgProfiler = new ProfilingSimpleUDP; (in index or Settings)
# $wgUDPProfilerHost = '10.0.6.30'; (in Settings)
+
* $wgUDPProfilerHost = '10.0.6.30'; (in Settings)
# running on professor:  
+
* running on professor:  
#* /usr/udpprofile/sbin/collector [http://svn.wikimedia.org/viewvc/mediawiki/trunk/udpprofile/ svn root]
+
** /usr/udpprofile/sbin/collector [http://svn.wikimedia.org/viewvc/mediawiki/trunk/udpprofile/ svn root]
#** listens on udp:3811 for profiling packets, provides xml dumps on tcp:3811  
+
*** listens on udp:3811 for profiling packets, provides xml dumps on tcp:3811  
#* /usr/udpprofile/sbin/profiler-to-carbon
+
** /usr/udpprofile/sbin/profiler-to-carbon
#** polls collector every minute, inserts count and timing (in ms) data into whisper db's  
+
*** polls collector every minute, inserts count and timing (in ms) data into whisper db's  
#* /opt/graphite/bin/carbon-cache.py  
+
** /opt/graphite/bin/carbon-cache.py  
#** updates whisper db files for graphite
+
*** updates whisper db files for graphite
# [http://graphite.wikimedia.org/dashboard graphite based web interface - uses labs ldap for auth]
+
* [http://graphite.wikimedia.org/dashboard graphite based web interface - uses labs ldap for auth]
# [http://noc.wikimedia.org/cgi-bin/report.py aggregate report web interface]
+
* [http://noc.wikimedia.org/cgi-bin/report.py aggregate report web interface]
#* [http://svn.wikimedia.org/viewvc/mediawiki/trunk/udpprofile/web/ svn root]
+
*** [http://svn.wikimedia.org/viewvc/mediawiki/trunk/udpprofile/web/ svn root]
 +
 
 +
== Using The Graphite Dashboard ==
 +
=== Finding Metrics ===
 +
* The left sidebar of the graphite dashboard provides two drop down menus - "Metric Type", which is used for providing shortcuts or aliases to certain metrics (which are hardcoded in the dashboard.conf located in puppet/files/graphite) and Category. Then below, a hierarchical finder of everything under the chosen category. This is all straight forward, except what's shown when Category = * is limited to a single level of the hierarchy - you don't want this! If Metric Type == Everything, make sure to select a class in Category.
 +
 
 +
[[File:Graphitemenu.png]]
 +
 
 +
* The dashboard menu option allows sets of graphs to be saved as a named dashboard.  Share provides a direct url to a saved dashboard, and Finder lists all shared dashboards.
 +
 +
=== Combining Metrics ===
 +
* Just drag graphs on top of each other to combine.
 +
 
 +
=== Types of Metrics ===
 +
* count - the number of calls made in the last minute. Note that for a few types of requests, mediawiki profiles 100% of requests, but most are at about 1.5%. 
 +
* tavg - average time in ms, based on everything collected in the sampling time - total-time/count
 +
* tp50 - 50th percentile in ms, calculated from a bucket of 300 samples
 +
* tp99 - 99th percentile 
 +
* tp999 - 99.9th percentile
 +
 
 +
=== Examples ===
 +
* 99% ParserCache get times, with cluster deploys overlaid as vertical lines 
 +
[[File:Pcache tp99 deploys.png]]
 +
* The url to generate this was - http://graphite.wikimedia.org/render?from=-24hours&until=now&width=800&height=600&target=ParserCache.get.tp99&target=drawAsInfinite(deploy.any)
 +
** Overlaying metrics is as simple as appending multiple target options. "&target=drawAsInfinite(deploy.any)" can be added to any graph for the deploy lines.
 +
 
  
 
[[Category:Services]]
 
[[Category:Services]]

Revision as of 02:11, 2 December 2011

Contents

What and Where

  • $wgProfiler = new ProfilingSimpleUDP; (in index or Settings)
  • $wgUDPProfilerHost = '10.0.6.30'; (in Settings)
  • running on professor:
    • /usr/udpprofile/sbin/collector svn root
      • listens on udp:3811 for profiling packets, provides xml dumps on tcp:3811
    • /usr/udpprofile/sbin/profiler-to-carbon
      • polls collector every minute, inserts count and timing (in ms) data into whisper db's
    • /opt/graphite/bin/carbon-cache.py
      • updates whisper db files for graphite
  • graphite based web interface - uses labs ldap for auth
  • aggregate report web interface

Using The Graphite Dashboard

Finding Metrics

  • The left sidebar of the graphite dashboard provides two drop down menus - "Metric Type", which is used for providing shortcuts or aliases to certain metrics (which are hardcoded in the dashboard.conf located in puppet/files/graphite) and Category. Then below, a hierarchical finder of everything under the chosen category. This is all straight forward, except what's shown when Category = * is limited to a single level of the hierarchy - you don't want this! If Metric Type == Everything, make sure to select a class in Category.

Graphitemenu.png

  • The dashboard menu option allows sets of graphs to be saved as a named dashboard. Share provides a direct url to a saved dashboard, and Finder lists all shared dashboards.

Combining Metrics

  • Just drag graphs on top of each other to combine.

Types of Metrics

  • count - the number of calls made in the last minute. Note that for a few types of requests, mediawiki profiles 100% of requests, but most are at about 1.5%.
  • tavg - average time in ms, based on everything collected in the sampling time - total-time/count
  • tp50 - 50th percentile in ms, calculated from a bucket of 300 samples
  • tp99 - 99th percentile
  • tp999 - 99.9th percentile

Examples

  • 99% ParserCache get times, with cluster deploys overlaid as vertical lines

Pcache tp99 deploys.png

Personal tools
Namespaces

Variants
Actions
Navigation
Ops documentation
Wiki
Toolbox