[PATCH] 2.3.11 spinlock metering

John Hawkes (hawkes@cthulhu.engr.sgi.com)
Mon, 23 Aug 1999 11:08:47 -0700


This is a multi-part message in MIME format.
--------------C1700E35C9F8572214D54E89
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Please consider this SMP i386 patch against 2.3.11 (or an analogous
patch against 2.2.10, previously posted) for spinlock "metering".

Spinlock metering is the runtime recording of data about spinlock usage
-- how often each spinlock is acquired by each locker, how often

an acquisition faced contention and had to wait because someone else
owned that spinlock, and how much time passed before the contention

went away.

The patch also contains a new command, "lockstat", which turns the
functional act of metering on or off in the kernel, and which

retrieves the kernel's data and displays it to the user in a useful
human-readable tabular format. Spinlock names and their callers are

displayed, whenever possible, using their symbolic names from the
System.map, not their virtual addresses, and mean wait-times are

displayed in microseconds.

After the kernel patch is applied to the kernel, a new config variable
(in the "Kernel hacking" subsection) controls whether or not

lockmetering gets compiled into the kernel. A lockmeter-capable kernel
has essentially the same size as a non-lockmeter-capable kernel

-- even smaller, in fact -- because the non-metered kernel's inline
locking code gets replaced by procedure calls, and the

multiple-reader-single-writer locks gets significantly smaller. A
lockmeter-capable kernel is negligibly slower than a normal

non-lockmeter-capable kernel when metering is turned off, and is 1-2%
slower when metering (the act of collecting the data itself) is

turned on.

Care has been taken to minimize runtime performance impact of
lockmetering. For example, the data structures that record the counts
and

times are separated per-CPU, which means there is no cache coherency
overhead when different CPUs update counts for the same spinlock

being called by the same caller.

As an example of the usefulness of this lockmetering code, I exercised
2x, 3x, and 4xCPU (4x400 MHz Xeon) configurations with an AIM7

workload that had been modified to remove three synchronous disk
subtests that otherwise would contend on a single disk spindle and

produce substantial idle time. My test workload ran with effectively
zero idle time, about 75% user and 25% system time.

My test results:

The 4xCPU 2.3.11 kernel performs about 6-8% faster than the 2.2.10
kernel at the highest loads. The 2.3.11 kernel did almost 3x the

number of spinlocks-per-second vs. the 2.2.10 kernel, due to the finer
granularity of 2.3's locking scheme, but 2.3 exhibits lock

contention on 2% of these calls vs. 18% in 2.2. When 2.3 does contend,
the mean wait-times are almost 2x those in 2.2. One likely

hypothesis for the longer mean wait-times is that 2.3 has eliminated the
quick, trivial contentions, leaving the longer contentions to

raise the mean.

With this workload on this 4xCPU Xeon hardware, spinlock contention in
2.2.10 consumed about 8% of theoretically available CPU cycles

(340 milliseconds/second of waiting per 4,000 milliseconds/second
theoretically available) vs. about 2% in 2.3.11 (95 milliseconds of

waiting per 4,000 milliseconds).

The kernel_flag usage is still significant in 2.3, but its contention is
greatly reduced. In 2.2 I saw contention on 40% of the

41K-per-second acquisitions, vs. 10% of the 19K-per-second acquisitions
done in the 2.3 kernel. Despite the almost 2x increase in mean

wait-time on the kernel_flag in 2.3, the overall number of kernel_flag
contention cycles is about 3x higher in 2.2.10 vs. 2.3.11. That

is, the 2.3 kernel goes after kernel_flag much less frequently and sees
much less contention on it; but when there is contention, that

contention results in a mean wait that is twice as long as in 2.2.

Further investigation (using a hacked, unreleased version of the
lockmetering code) shows that the biggest kernel_flag pig in 2.3.11 is

sys_close(), which holds the kernel_flag for as long as 10-13
milliseconds (on a 400 MHz Xeon CPU) on a regular basis.

A broader discussion of spinlock metering is available at the SGI Open
Source website:
http://oss.sgi.com/projects/lockmeter

John Hawkes
(hawkes@engr.sgi.com)
--------------C1700E35C9F8572214D54E89
Content-Type: application/x-gzip;
name="lockmeter1.0-2.3.11.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="lockmeter1.0-2.3.11.gz"

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
YfZgyKAeI1D3fwC1o1aiutkAAA==
--------------C1700E35C9F8572214D54E89--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/