Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/249915
Change subject: Make the percentile threshold for slow function stats
configurable
......................................................................
Make the percentile threshold for slow function stats configurable
Introduce $wgScribuntoSlowFunctionThreshold, which is a float value between 0
and 1 (defaults to 0.9), specifying the percentile threshold for slow function
invocation reporting.
Change-Id: I3bd862347c21ba68d2f2f0729a834c4f7be3cd43
---
M Scribunto.php
M common/Hooks.php
2 files changed, 18 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Scribunto
refs/changes/15/249915/1
diff --git a/Scribunto.php b/Scribunto.php
index e9f83a5..49961cf 100644
--- a/Scribunto.php
+++ b/Scribunto.php
@@ -188,6 +188,13 @@
*/
$wgScribuntoGatherFunctionStats = false;
+/**
+ * If $wgScribuntoGatherFunctionStats is true, this variable specifies
+ * the percentile threshold for slow function invocations. Should be
+ * a value between 0 and 1 (exclusive).
+ */
+$wgScribuntoSlowFunctionThreshold = 0.90;
+
define( 'NS_MODULE', 828 );
define( 'NS_MODULE_TALK', 829 );
diff --git a/common/Hooks.php b/common/Hooks.php
index 508250e..945aad3 100644
--- a/common/Hooks.php
+++ b/common/Hooks.php
@@ -176,9 +176,14 @@
* @param int $timing Function execution time in milliseconds.
*/
public static function reportTiming( $moduleName, $functionName,
$timing ) {
- global $wgScribuntoGatherFunctionStats;
+ global $wgScribuntoGatherFunctionStats,
$wgScribuntoSlowFunctionThreshold;
if ( !$wgScribuntoGatherFunctionStats ) {
+ return;
+ }
+
+ $threshold = $wgScribuntoSlowFunctionThreshold;
+ if ( !( is_float( $threshold ) && $threshold > 0 && $threshold
< 1 ) ) {
return;
}
@@ -189,19 +194,20 @@
}
// To control the sampling rate, we keep a compact histogram of
- // observations in APC, and extract the 99th percentile. We need
- // APC and \RunningStat\PSquare to do that.
+ // observations in APC, and extract the Nth percentile
(specified
+ // via $wgScribuntoSlowFunctionThreshold; defaults to 0.90).
+ // We need APC and \RunningStat\PSquare to do that.
if ( !class_exists( '\RunningStat\PSquare' ) || $cache
instanceof EmptyBagOStuff ) {
return;
}
- $key = $cache->makeGlobalKey( __METHOD__ );
+ $key = $cache->makeGlobalKey( __METHOD__, $threshold );
// This is a classic "read-update-write" critical section with
no
// mutual exclusion, but the only consequence is that some
samples
// will be dropped. We only need enough samples to estimate the
// the shape of the data, so that's fine.
- $ps = $cache->get( $key ) ?: new \RunningStat\PSquare( 0.99 );
+ $ps = $cache->get( $key ) ?: new \RunningStat\PSquare(
$threshold );
$ps->addObservation( $timing );
$cache->set( $key, $ps, 60 );
--
To view, visit https://gerrit.wikimedia.org/r/249915
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3bd862347c21ba68d2f2f0729a834c4f7be3cd43
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Scribunto
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits