Re: [RFC][CFT][PATCHSET v1] uaccess unification

From: Russell King - ARM Linux
Date: Thu Mar 30 2017 - 12:23:19 EST


On Wed, Mar 29, 2017 at 06:57:06AM +0100, Al Viro wrote:
> Comments, review, testing, replacement patches, etc. are very welcome.

I've given this a spin, and it appears to work (in that the box boots).

Kernel size wise:

text data bss dec hex filename
8020229 3014220 10243276 21277725 144ac1d vmlinux.orig
8034741 3014388 10243276 21292405 144e575 vmlinux.uaccess
7976719 3014324 10243276 21234319 144028f vmlinux.noinline

Performance using hdparm -T (cached reads) to evaluate against a SSD
gives me the following results:

* original:
Timing cached reads: 580 MB in 2.00 seconds = 289.64 MB/sec
Timing cached reads: 580 MB in 2.00 seconds = 290.06 MB/sec
Timing cached reads: 580 MB in 2.00 seconds = 289.65 MB/sec
Timing cached reads: 582 MB in 2.00 seconds = 290.82 MB/sec
Timing cached reads: 578 MB in 2.00 seconds = 289.07 MB/sec

Average = 289.85MB/s

* uaccess:
Timing cached reads: 578 MB in 2.00 seconds = 288.36 MB/sec
Timing cached reads: 534 MB in 2.00 seconds = 266.68 MB/sec
Timing cached reads: 534 MB in 2.00 seconds = 267.07 MB/sec
Timing cached reads: 552 MB in 2.00 seconds = 275.45 MB/sec
Timing cached reads: 532 MB in 2.00 seconds = 266.08 MB/sec

Average = 272.73 MB/sec

* noinline:
Timing cached reads: 548 MB in 2.00 seconds = 274.16 MB/sec
Timing cached reads: 574 MB in 2.00 seconds = 287.19 MB/sec
Timing cached reads: 574 MB in 2.00 seconds = 286.47 MB/sec
Timing cached reads: 572 MB in 2.00 seconds = 286.20 MB/sec
Timing cached reads: 578 MB in 2.00 seconds = 288.86 MB/sec

Average = 284.58 MB/sec

I've run the test twice, and there's definitely a reproducable drop in
performance for some reason when switching between current and Al's
uaccess patches, which is partly recovered by switching to the out of
line versions.

The only difference that I can identify that could explain this are
the extra might_fault() checks in Al's version but which are missing
from the ARM version.

I'd suggest that we immediately switch to the uninlined versions on
ARM so that the impact of that change is reduced. We end up with
a 1.9% performance reduction rather than a 6% reduction with the
inlined versions.

--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.