Re: [RFC PATCH] fuse: support splice() reading from fuse device

From: Linus Torvalds
Date: Thu May 20 2010 - 15:22:24 EST




On Thu, 20 May 2010, Miklos Szeredi wrote:
>
> So it's not the 20GB/s throughput that's interesting but the reduced
> CPU overhead, especially on slower processors. Apart from cache
> effects 20GB/s throughput with a null filesystem means 1% CPU at
> 200MB/s transfer speed with _any_ filesystem.

No it doesn't. Really.

It means 1% CPU at 200MB _IF_ you trigger the zero copy and nothing else!

But that's a damn big if. Does it ever trigger in practice? I doubt it. In
practice, you'll have to fill the pages with something in the first place.
In practice, the destination of the data is such that you'll often end up
copying anyway - it won't be /dev/null.

That's why I claim your benchmark is meaningless. It does NOT even say
what you claim it says. It does not say 1% CPU on a 200MB/s transfer,
exactly the same way my stupid pipe zero-copy didn't mean that people
could magically get MB/s throughput with 1% CPU on pipes.

It says nothing at all, in short. You need to have a real source, and a
real destination. Not some empty filesystem and /dev/null destination.

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