lkml.org 
[lkml]   [2003]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Minutes from 10/1 LSE Call
Larry McVoy wrote:
> On Wed, Oct 01, 2003 at 04:29:16PM -0700, Andrew Morton wrote:
>
>>If you have a loop like:
>>
>> char *buf;
>>
>> for (lots) {
>> read(fd, buf, size);
>> }
>>
>>the optimum value of `size' is small: as little as 8k. Once `size' gets
>>close to half the size of the L1 cache you end up pushing the memory at
>>`buf' out of CPU cache all the time.
>
>
> I've seen this too, not that Andrew needs me to back him up, but in many
> cases even 4k is big enough. Linux has a very thin system call layer so
> it is OK, good even, to use reasonable buffer sizes.


Slight tangent, FWIW... Back when I was working on my "race-free
userland" project, I noticed that the fastest cp(1) implementation was
GNU's: read/write from a single, statically allocated, page-aligned 4K
buffer. I experimented with various buffer sizes, mmap-based copies,
and even with sendfile(2) where both arguments were files.
read(2)/write(2) of a single 4K buffer was always the fastest.

Jeff



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

\
 
 \ /
  Last update: 2005-03-22 13:49    [W:0.083 / U:0.432 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site