Provided by: erlang-manpages_18.3-dfsg-1ubuntu3.1_all bug

NAME

       overload - An Overload Regulation Process

DESCRIPTION

   Warning:
       All functions in this module are deprecated and will be removed in a future release.

       overload  is  a process that indirectly regulates the CPU usage in the system. The idea is
       that a main application calls function request/0 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, MaxIntensity and Weight; 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, if 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)

       The value of configuration parameter Weight controls the speed with which the calculations
       of  intensities  react to changes in the underlying input intensity. The inverted value of
       Weight, T = 1/Weight,  can  be  thought  of  as  the  "time  constant"  of  the  intensity
       calculation  formulas.  For  example,  if  Weight  = 0.1, a change in the underlying input
       intensity is reflected in total intensity and accept intensity within about 10 seconds.

       The    overload    process    defines    one    alarm,     which     it     sets     using
       alarm_handler:set_alarm(Alarm). Alarm is defined as follows:

         {overload, []}:
           This alarm is set when the current accept intensity exceeds MaxIntensity.

       A  new  request  is  not  accepted  until  the  current  accept intensity has fallen below
       MaxIntensity. To prevent the overload process from generating many set/reset  alarms,  the
       alarm  is  not  reset  until  the  current  accept  intensity  has  fallen  below  75%  of
       MaxIntensity; it is not until then that the alarm can be set again.

EXPORTS

       request() -> accept | reject

              Returns accept or reject depending on the current value of the accept intensity.

              The application calling this function is to proceed with the job in question if the
              return value is accept; otherwise it is not to 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:

                * Current total and accept intensities

                * Configuration parameters

                * Absolute counts of the total number of requests

                * Accepted number of requests (since the overload process was started)

SEE ALSO

       alarm_handler(3erl), sasl(7)