From: Andi Kleen <andi@firstfloor.org>
To: miaox@cn.fujitsu.com
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Theodore Ts'o" <tytso@mit.edu>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Linux Ext4 <linux-ext4@vger.kernel.org>,
Linux Btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH V2 1/3] lib: introduce some memory copy macros and functions
Date: Thu, 02 Sep 2010 10:55:58 +0200 [thread overview]
Message-ID: <877hj4o76p.fsf@basil.nowhere.org> (raw)
In-Reply-To: <4C7F3A2A.2000007@cn.fujitsu.com> (Miao Xie's message of "Thu, 02 Sep 2010 13:46:18 +0800")
Miao Xie <miaox@cn.fujitsu.com> writes:
> Changes from V1 to V2:
> - change the version of GPL from version 2.1 to version 2
>
> the kernel's memcpy and memmove is very inefficient. But the glibc version is
> quite fast, in some cases it is 10 times faster than the kernel version. So I
Can you elaborate on which CPUs and with what workloads you measured that?
The kernel memcpy is optimized for copies smaller than a page size
for example (kernel very rarely does anything on larger than 4k),
the glibc isn't. etc. There are various other differences.
memcpy and memmove are very different. AFAIK noone has tried
to optimize memmove() before because traditionally it wasn't
used for anything performance critical in the kernel. Has that
that changed? memcpy on the other hand while not perfect
is actually quite optimized for typical workloads.
One big difference between the kernel and glibc is that kernel
is often cache cold, so you e.g. the cost of a very large code footprint
memcpy/memset is harder to amortize.
Microbenchmarks often leave out that crucial variable.
I have some systemtap scripts to measure size/alignment distributions of
copies on a kernel, if you have a particular workload you're interested
in those could be tried.
Just copying the glibc bloat uncritical is very likely
the wrong move at least.
-Andi
--
ak@linux.intel.com -- Speaking for myself only.
next prev parent reply other threads:[~2010-09-02 8:55 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-02 5:46 [PATCH V2 1/3] lib: introduce some memory copy macros and functions Miao Xie
2010-09-02 5:46 ` Miao Xie
2010-09-02 8:55 ` Andi Kleen [this message]
2010-09-02 10:11 ` Miao Xie
2010-09-02 10:40 ` Andi Kleen
2010-09-08 11:05 ` Miao Xie
2010-09-08 12:19 Andi Kleen
2010-09-08 12:19 ` Andi Kleen
2010-09-08 12:57 ` Miao Xie
2010-09-08 13:05 ` Andi Kleen
2010-09-08 13:32 ` Miao Xie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877hj4o76p.fsf@basil.nowhere.org \
--to=andi@firstfloor.org \
--cc=akpm@linux-foundation.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miaox@cn.fujitsu.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.