Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Sep 2010 18:38:17 +0300
From:      Andriy Gapon <avg@freebsd.org>
To:        Steven Hartland <killing@multiplay.co.uk>
Cc:        freebsd-fs@freebsd.org, jhell <jhell@DataIX.net>, Pawel Jakub Dawidek <pjd@freebsd.org>, freebsd-net@freebsd.org
Subject:   Re: zfs very poor performance compared to ufs due to lack of cache?
Message-ID:  <4C90E869.8000400@freebsd.org>
In-Reply-To: <4C90E328.20606@freebsd.org>
References:  <5DB6E7C798E44D33A05673F4B773405E@multiplay.co.uk><AANLkTikNhsj5myhQCoPaNytUbpHtox1vg9AZm1N-OcMO@mail.gmail.com><4C85E91E.1010602@icyb.net.ua><4C873914.40404@freebsd.org><20100908084855.GF2465@deviant.kiev.zoral.com.ua><4C874F00.3050605@freebsd.org><A6D7E134B24F42E395C30A375A6B50AF@multiplay.co.uk><4C8D087B.5040404@freebsd.org><03537796FAB54E02959E2D64FC83004F@multiplay.co.uk><4C8D280F.3040803@freebsd.org><3FBF66BF11AA4CBBA6124CA435A4A31B@multiplay.co.uk><4C8E4212.30000@freebsd.org> <B98EBECBD399417CA5390C20627384B1@multiplay.co.uk> <D79F15FEB5794315BD8668E40B414BF0@multiplay.co.uk> <4C90B4C8.90203@freebsd.org> <6DFACB27CA8A4A22898BC81E55C4FD36@multiplay.co.uk> <4C90D3A1.7030008@freebsd.org> <0B1A90A08DFE4ADA9540F9F3846FDF38@multiplay.co.uk> <4C90E328.20606@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 15/09/2010 18:15 Andriy Gapon said the following:
> on 15/09/2010 18:04 Steven Hartland said the following:
>> Hmm, so taking a different track on the issue is the a way to make sendfile use data
>> directly from ARC instead of having to copy it first?
> 
> Well, theoretically everything is possible, but I am not sure if it's feasible.
> It's a lot of work anyways, it should be a very specialized sendfile and a lot if
> inter-layer knowledge and dependencies.
> Don't hold your breath for it.

Perhaps some middle-ground solution can be developed with less effort.
This solution would be specific to filesystems that don't use buffer cache, so it
wouldn't touch any pages, but instead it would use regular VOP_READ into a mbuf.
So, there would be copying, but page caches won't be unnecessarily "polluted" with
second copy of the data and this all would happen in kernel giving an advantage
over userland solution with read(2)+send(2).

Having said that, I see that OpenSolaris has a mechanism for something like that.
The mechanism can either globally enabled or enabled for file over certain size.
The mechanism uses dedicated kernel threads that get data using direct I/O, buffer
and send it.
That's my impression from a quick look, I may have gotten things wrong.

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C90E869.8000400>