overload(3erl) | Erlang Module Definition | overload(3erl) |
NAME¶
overload - An Overload Regulation ProcessDESCRIPTION¶
overload is a process which indirectly regulates CPU usage in the system. The idea is that a main application calls the request/0 function before starting a major job, and proceeds with the job if the return value is positive; otherwise the job must not be started. overload is part of the sasl application, and all configuration parameters are defined there. A set of two intensities are maintained, the total intensity and the accept intensity. For that purpose there are two configuration parameters, the MaxIntensity and the Weight value (both are measured in 1/second). Then total and accept intensities are calculated as follows. Assume that the time of the current call to request/0 is T(n), and that the time of the previous call was T(n-1).- *
- The current total intensity, denoted TI(n), is calculated according to the formula,
TI(n) = exp(-Weight*(T(n) - T(n-1)) * TI(n-1) + Weight,
where TI(n-1) is the previous total intensity.
- *
- The current accept intensity, denoted AI(n), is determined by the formula,
AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1) + Weight,
where AI(n-1) is the previous accept intensity, provided that the value
of exp(-Weight*(T(n) - T(n-1)) * AI(n-1) is less than
MaxIntensity; otherwise the value is
AI(n) = exp(-Weight*(T(n) - T(n-1)) * AI(n-1).
- {overload, []}:
- This alarm is set when the current accept intensity exceeds MaxIntensity.
EXPORTS¶
request() -> accept | reject
Returns accept or reject depending on the current value of the
accept intensity.
The application calling this function should be processed with the job in
question if the return value is accept; otherwise it should not
continue with that job.
get_overload_info() -> OverloadInfo
Types:
OverloadInfo = [{total_intensity, TotalIntensity},
{accept_intensity, AcceptIntensity}, {max_intensity, MaxIntensity}, {weight,
Weight}, {total_requests, TotalRequests}, {accepted_requests,
AcceptedRequests}].
TotalIntensity = float() > 0
AcceptIntensity = float() > 0
MaxIntensity = float() > 0
Weight = float() > 0
TotalRequests = integer()
AcceptedRequests = integer()
Returns the current total and accept intensities, the configuration parameters,
and absolute counts of the total number of requests, and accepted number of
requests (since the overload process was started).
SEE ALSO¶
alarm_handler(3erl), sasl(3erl)sasl 2.4.1 | Ericsson AB |