Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 May 2006 22:18:20 +0200
From:      Suleiman Souhlal <ssouhlal@FreeBSD.org>
To:        rookie@gufi.org
Cc:        freebsd-hackers@freebsd.org, freebsd-x86@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: [patch] Adding optimized kernel copying support - Part III
Message-ID:  <447DFA0C.20207@FreeBSD.org>
In-Reply-To: <3bbf2fe10605311156p7e629283r34d22b368877582d@mail.gmail.com>
References:  <3bbf2fe10605311156p7e629283r34d22b368877582d@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Attilio,

Attilio Rao wrote:
> Hi,
> this is the last release which is rather finished and complete for the 
> project.
> 
> I tested for consistency for a long time and the FPU handling
> mechanism seems very robust so as copyin/copyout do.

Nice work. Any chance you could also port it to amd64? :-)

> What I'm looking for, at this point, are testers for peroformances.
> What is proposed in the patch is one of the better solutions for UP
> archs (not running with PREEMPTION) but more general cases might be
> handled with time.

Does that mean it won't work with SMP and PREEMPTION?

> I hope that somebody wants to play with him, giving suggestions and
> doing different benchmarks.

What kind of performance improvements did you see in your benchmarks?

> The code can be found here:
> http://users.gufi.org/~rookie/works/patches/xmmcopy_6_1.diff
> 
> and is for RELEASE_6_1 in order to have a wider range of testers (a
> diff against HEAD will be available ASAP).
> 
> Please keep in mind that this is not a complete rip of DflyBSD code
> beacause it is different in a lot of parts.
> 
> For any kind of tecnical questions, please mail me.

I wonder if we could get rid of the memcpy_vector (copyin/copyout_vector 
before this patch), bzero_vector and bcopy_vector function pointers and 
do boot-time patching of the callers to the right version.

I have a linux-inspired proof-of-concept demo of this boot-time patching 
at http://people.freebsd.org/~ssouhlal/testing/bootpatch-20060527.diff. 
It prefetches the next element in the *_FOREACH() macros in sys/queue.h. 
The patching that it does is to use PREFETCH instruction instead of 
PREFETCHNTA if the cpu is found to support SSE2.

-- Suleiman




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?447DFA0C.20207>