From owner-freebsd-stable@FreeBSD.ORG Fri Oct 29 15:25:51 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C0E01106566B; Fri, 29 Oct 2010 15:25:51 +0000 (UTC) (envelope-from ai@kliksys.ru) Received: from gate.kliksys.ru (gate.kliksys.ru [78.110.241.113]) by mx1.freebsd.org (Postfix) with ESMTP id 75C858FC0C; Fri, 29 Oct 2010 15:25:51 +0000 (UTC) Received: from [192.168.0.204] (helo=two.kliksys.ru) by gate.kliksys.ru with esmtp (Exim 4.71 (FreeBSD)) (envelope-from ) id 1PBqpx-000FAn-TK; Fri, 29 Oct 2010 19:25:50 +0400 Date: Fri, 29 Oct 2010 19:26:02 +0400 From: Artemiev Igor To: freebsd-stable@freebsd.org, freebsd-fs@freebsd.org Message-ID: <20101029152602.GA18613@two.kliksys.ru> References: <3D1C350B94A44E5D95BAA1596D1EBF13@vosz.local> <20101029090417.GA17537@two.kliksys.ru> <4CCABFC2.3040701@icyb.net.ua> <4CCADD37.7000306@icyb.net.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4CCADD37.7000306@icyb.net.ua> User-Agent: Mutt/1.5.20 (2009-06-14) X-Spam_score: 0.0 Cc: Subject: Re: 8.1-STABLE: zfs and sendfile: problem still exists X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Oct 2010 15:25:51 -0000 On Fri, Oct 29, 2010 at 05:41:59PM +0300, Andriy Gapon wrote: > What svn revision of FreeBSD source tree did you test? r213936. Revision seems a little old. > Ah, I think I see what's going on. > Either sendfile should (have an option to) use VOP_GETPAGES to request data or ZFS > mappedread should use vm_grab_page instead of vm_lookup_page for UIO_NOCOPY case. > Currently ZFS would read a whole FS block into ARC, but populate only one page > with data and for the rest it would just wastefully do uiomove(UIO_NOCOPY) from > ARC data. > So, e.g. zpool iostat would show that there are only few actual reads from a pool. > The rest of the time must be spent churning over the data already in ARC and > doing page-per-VOP_READ copies from it. I can test it, but what allocflags? VM_ALLOC_RETRY|VM_ALLOC_NORMAL?