Re: uaccess.h reimplementation, patch, 2.1.30

Paul Gortmaker (paul@rasty.anu.edu.au)
Mon, 31 Mar 1997 20:23:32 +1000 (EST)


I wrote:

> Avg of 3:24.0 vs. 3:27.4 with a noise of about +/-3 seconds). Still
> about 30 sec better than the current access_ok(). Will have to see
> if the percent differences are of equal magnitude on 486 boxes, or
> if the existence of L1 cache changes things vs. the above 386 #'s.

Ingo wrote:

> I'm curious wether the speed/size+cache locality improvement seen by Paul
> Gortmaker stands for this implementation too.

Okay, as soon as I saw Linus mention the broken WP support, I realized why
defining access_ok() to 1 was such a gain on i386. Since i386 requires the
check to be done in software due to the broken write protect issue, of
course access_ok() on i386 will be much more expensive (in both code size
and speed). On i486 or better, the speed difference is next to nothing as
seen below. There is still a size reduction win (20kB) though. Test is the
same 270 page LaTeX doc, only this time run on an i486-66 box (but with the
same NFS server). As before, I've discarded the timing data from the first
run after a reboot for obvious reasons.

Paul.
---------------

2.0.29 + DaveM pre-patch
==================
Memory: 16228k/17664k available (576k kernel code, 384k reserved, 476k data)
(1052kB size)
45.300u 2.870s 0:51.29 93.9% 0+0k 0+0io 114pf+0w
44.450u 2.800s 0:50.76 93.0% 0+0k 0+0io 114pf+0w
44.040u 3.130s 0:49.77 94.7% 0+0k 0+0io 114pf+0w
44.350u 3.120s 0:50.62 93.7% 0+0k 0+0io 114pf+0w

2.1.30
======
Memory: 16036k/17664k available (652k kernel code, 384k reserved, 592k data)
(1244kB size)
39.950u 4.950s 0:48.99 91.6% 0+0k 0+0io 114pf+0w
44.150u 2.950s 0:50.83 92.6% 0+0k 0+0io 114pf+0w
42.990u 3.100s 0:48.69 94.6% 0+0k 0+0io 114pf+0w
43.910u 2.890s 0:50.00 93.6% 0+0k 0+0io 114pf+0w

2.1 + access_ok() #defined as 1.
================================
Memory: 16056k/17664k available (632k kernel code, 384k reserved, 592k data)
(1224kB size)
44.560u 2.740s 0:50.70 93.2% 0+0k 0+0io 114pf+0w
44.030u 3.030s 0:49.89 94.3% 0+0k 0+0io 114pf+0w
39.310u 6.360s 0:49.46 92.3% 0+0k 0+0io 114pf+0w
44.000u 2.780s 0:49.88 93.7% 0+0k 0+0io 114pf+0w

2.1 + latest ingo-diff
======================
Memory: 16056k/17664k available (632k kernel code, 384k reserved, 592k data)
(1224kB size)
43.400u 2.780s 0:49.33 93.6% 0+0k 0+0io 114pf+0w
43.750u 2.630s 0:49.10 94.4% 0+0k 0+0io 114pf+0w
43.610u 2.620s 0:49.04 94.2% 0+0k 0+0io 114pf+0w
44.030u 2.850s 0:50.16 93.4% 0+0k 0+0io 114pf+0w