<<O>>  Difference Topic LoadAverage (r1.4 - 26 Dec 2003 - TWikiGuest)

Most servers have many processes loaded in memory at any given time. Most, however, are sitting idle and waiting for an event to occur (such as an incoming network request, or a set period of time to elapse).

The "load average" refers to the average number of RunnableProcesses. An instantaneous measurement would be rather useless, since many processes only run for a very short amount of time (think of a webserver that sends a few files simultaneously, then goes back to waiting). If you were to query the system at the precise instant of a flurry of activity or during a lull, you would get an inaccurate impression of the system's activity level.

Line: 13 to 13

An interesting question that has come to light since writing that chapter is, whether or not the code for calculating the load avg. was inherited from early AT&T UNIX. I have documented evidence that the algorithm was developed and used in the Multics project (the MIT precursor to UNIX at Bell Labs). If so, does SCO actually have a case?

Changed:
<
<
--njg
>
>
--njg (12-25-03)

Non-Technical Definition

 <<O>>  Difference Topic LoadAverage (r1.3 - 25 Dec 2003 - TWikiGuest)

Most servers have many processes loaded in memory at any given time. Most, however, are sitting idle and waiting for an event to occur (such as an incoming network request, or a set period of time to elapse).

The "load average" refers to the average number of RunnableProcesses. An instantaneous measurement would be rather useless, since many processes only run for a very short amount of time (think of a webserver that sends a few files simultaneously, then goes back to waiting). If you were to query the system at the precise instant of a flurry of activity or during a lull, you would get an inaccurate impression of the system's activity level.

Added:
>
>
+++++++++++++++++++++++++

I just surfed upon this discussion and observed that there are more near truths than correct statements. A very detailed (and hopefully correct) analysis of what are the load average metrics (there are 3 of them, note) and how it works can be found online at a talk I gave to a Linux group in 2002 ... http://www.luv.asn.au/overheads/NJG_LUV_2002/luvSlides.html

Basically, the load average is an exponentially damped moving average of the run_queue length, which includes those processes currently running on CPUs but NOT those that are suspended waiting for I/O completion, etc. See also Chap. 4 of my new book http://www.perfdynamics.com/iBook/ppa_new.html

An interesting question that has come to light since writing that chapter is, whether or not the code for calculating the load avg. was inherited from early AT&T UNIX. I have documented evidence that the algorithm was developed and used in the Multics project (the MIT precursor to UNIX at Bell Labs). If so, does SCO actually have a case?

--njg


Non-Technical Definition

An analogy (thanks to MattBear?):

 <<O>>  Difference Topic LoadAverage (r1.2 - 22 Nov 2003 - KirkStrauser)

Most servers have many processes loaded in memory at any given time. Most, however, are sitting idle and waiting for an event to occur (such as an incoming network request, or a set period of time to elapse).
Changed:
<
<
The "load average" refers to the average number of RunnableProcesses. An instantaneous measurement would be rather useless, since many processes only run for a very short amount of time (think of a webserver that sends a few files simultaneously, then goes back to waiting). If you were to query the system at the precise instant of a flurry of activity or during a lull, you would get an inaccurate impression of the system's activity level.
>
>
The "load average" refers to the average number of RunnableProcesses. An instantaneous measurement would be rather useless, since many processes only run for a very short amount of time (think of a webserver that sends a few files simultaneously, then goes back to waiting). If you were to query the system at the precise instant of a flurry of activity or during a lull, you would get an inaccurate impression of the system's activity level.

Non-Technical Definition

Line: 20 to 20

Comparisons

"Priorities" given to processes indicate who can cut in front of whom in the CPU line.

Changed:
<
<
WindowsNT? has about 7 PriorityLevels?; Sun Solaris has about TwoBillion.
>
>
WindowsNT? has about 7 PriorityLevels?; Sun Solaris has about TwoBillion.

Effects

Line: 41 to 41

40.0 That $300,000 Sun Enterprise Server begins to seem pretty reasonable.

-- KirkStrauser - 20 Mar 2003

Added:
>
>
META TOPICMOVED KirkStrauser? date="1069521075" from="Main.LoadAverage" to="Computing.LoadAverage"
 <<O>>  Difference Topic LoadAverage (r1.1 - 20 Mar 2003 - KirkStrauser)
Line: 1 to 1
Added:
>
>
Most servers have many processes loaded in memory at any given time. Most, however, are sitting idle and waiting for an event to occur (such as an incoming network request, or a set period of time to elapse).

The "load average" refers to the average number of RunnableProcesses. An instantaneous measurement would be rather useless, since many processes only run for a very short amount of time (think of a webserver that sends a few files simultaneously, then goes back to waiting). If you were to query the system at the precise instant of a flurry of activity or during a lull, you would get an inaccurate impression of the system's activity level.

Non-Technical Definition

An analogy (thanks to MattBear?):

Imagine that there are several lines (queues, for the British) to stand in, and the processes are the ones standing in line. There's a CPU line, an InputOutput? line, a FileSystem? line, and so on. The LoadAverage is the average number of processes standing in the CPU line. Imagine the lines are like checkout lines, and there are "people" to serve the processes waiting at the end of the line. A SingleProcessor? machine has only one person to serve everyone in line. A DualProcessor? machine has two, and so on. So, a LoadAverage of 2 means that there's no contention for the CPU in a DualProcessor? machine.

More-Technical Definition

The load average is the average number of lines in a ps listing where the process has an "R" code (to indicate that it's in the RunQueue?).

Comparisons

"Priorities" given to processes indicate who can cut in front of whom in the CPU line. WindowsNT? has about 7 PriorityLevels?; Sun Solaris has about TwoBillion.

Effects

LoadAverage has much more effect on a running system than CpuUsage?, since it's possible to have a long-running process that uses 100% of the available CPU when it taken, but which instantly relinquishes the CPU to any other program that wants to use it (examples: the DistributedDotNet? RC5 contest, SetiAtHome). A high load average can cause a system to feel unresponsive as many processes contend for a chance to run. A very heavily loaded system can begin to "thrash", as new processes are launched more quickly than old processes can finish running.

Example load averages and their perceived system impact:

LoadAverage Effect
0 New processes start and run quickly. The system is very responsive. If this is a server, then you spent too much money on it, since it's mostly sitting idle
0.5 WindowsNineX? machines begin to feel unresponsive.
1.0 The machine is processing incoming events quickly and efficiently. Many machines running CPU-intensive background tasks sit at this level for months at a time.
2.0 The machine is beginning to earn its keep. It is still running efficiently, but some interactive tasks begin to feel "jittery."
4.0 Interactive tasks are noticeably jumpy.
6.0 The system may be beginning to thrash.
10.0 A FreeBSD server begins to wake up and wonder what the ruckus is about.
15.0 Some older Unix systems begin to cry.
30.0 FreeBSD begins to cry, but keeps working.
40.0 That $300,000 Sun Enterprise Server begins to seem pretty reasonable.

-- KirkStrauser - 20 Mar 2003

View topic | Diffs | r1.4 | > | r1.3 | > | r1.2 | More
Revision r1.1 - 20 Mar 2003 - 16:53 - KirkStrauser
Revision r1.4 - 26 Dec 2003 - 21:34 - TWikiGuest