Commit graph

10 commits

Author SHA1 Message Date
Adam Niedzielski
ee31872777 Execute metrics initializer earlier
This makes sure that Gitlab::Metrics::RackMiddleware is added before
Gitlab::EtagCaching::Middleware.
2017-03-01 18:15:28 +01:00
Robert Speicher
57f9ee0b9f Add more highlighting to Instrumentation doc
[ci skip]
2016-11-09 11:05:23 +00:00
Yorick Peterse
0c046399d4
Document how to track custom events
Fixes gitlab-org/gitlab-ce#22070

[ci skip]
2016-09-12 17:41:45 +02:00
Yorick Peterse
be3b878443 Track method call times/counts as a single metric
Previously we'd create a separate Metric instance for every method call
that would exceed the method call threshold. This is problematic because
it doesn't provide us with information to accurately get the _total_
execution time of a particular method. For example, if the method
"Foo#bar" was called 4 times with a runtime of ~10 milliseconds we'd end
up with 4 different Metric instances. If we were to then get the
average/95th percentile/etc of the timings this would be roughly 10
milliseconds. However, the _actual_ total time spent in this method
would be around 40 milliseconds.

To solve this problem we now create a single Metric instance per method.
This Metric instance contains the _total_ real/CPU time and the call
count for every instrumented method.
2016-06-17 13:09:55 -04:00
Paco Guzman
dadc531353 Instrument private/protected methods
By default instrumentation will instrument public,
protected and private methods, because usually
heavy work is done on private method or at least
that’s what facts is showing
2016-06-14 15:17:51 +02:00
Paco Guzman
120fbbd487 Measure CPU time for instrumented methods 2016-06-14 12:49:31 +02:00
Yorick Peterse
e449a6c05c
Added documentation on how to instrument methods
[ci skip]
2016-05-05 19:26:41 +02:00
Yorick Peterse
d9110a7eca
Track call counts in Gitlab::Metrics.measure_block 2016-04-11 13:27:52 +02:00
Yorick Peterse
16926a676b
Store block timings as transaction values
This makes it easier to query, simplifies the code, and makes it
possible to figure out what transaction the data belongs to (simply
because it's now stored _in_ the transaction).

This new setup keeps track of both the real/wall time _and_ CPU time
spent in a block, both measured using milliseconds (to keep all units
the same).
2016-04-11 13:09:36 +02:00
Yorick Peterse
352bc7d2b9 Added dev guide for measuring Ruby blocks 2016-04-06 14:32:27 +02:00