File: //proc/self/root/usr/include/hphp/runtime/base/perf-warning.h
/*
+----------------------------------------------------------------------+
| HipHop for PHP |
+----------------------------------------------------------------------+
| Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
*/
#ifndef incl_HPHP_RUNTIME_BASE_PERF_WARNING_H_
#define incl_HPHP_RUNTIME_BASE_PERF_WARNING_H_
#include "hphp/util/struct-log.h"
#include <folly/Range.h>
#include <atomic>
namespace HPHP {
constexpr int64_t kDefaultPerfWarningRate = 100;
/*
* Attempt to log an entry to the perf warning service.
*
* If StructuredLog::enabled() returns false or this event is discarded by the
* effective sample rate, nothing will be logged. If both of those checks pass,
* fillCols will be passed a StructuredLogEntry& to populate, which will then
* be logged. The column names "event_name" and "priority" are reserved and
* will be overwritten is fillCols() sets them.
*
* The effective sample rate is determined by Eval.PerfWarningSampleRate * rate
* (or kDefaultPerfWarningRate for the overloads that don't take a rate). If
* the effective sample rate is 0, all events will be discarded.
*/
template<typename F>
void logPerfWarning(folly::StringPiece event, F fillCols);
template<typename F>
void logPerfWarning(folly::StringPiece event, int64_t rate, F fillCols);
template<typename F>
void logLowPriPerfWarning(folly::StringPiece event, F fillCols);
template<typename F>
void logLowPriPerfWarning(folly::StringPiece event, int64_t rate, F fillCols);
/*
* If the given AtomicHashMap has more than one submap allocated, log a perf
* warning with its name.
*
* A single unique done flag should exist for each map being checked, to avoid
* logging more than once (process, map) pair.
*/
template<typename AHM>
void checkAHMSubMaps(const AHM& map, folly::StringPiece mapName,
std::atomic<bool>& done);
void logAHMSubMapWarning(folly::StringPiece mapName);
}
#include "hphp/runtime/base/perf-warning-inl.h"
#endif