From owner-freebsd-stable@FreeBSD.ORG Fri Oct 29 13:36:06 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 242F91065670 for ; Fri, 29 Oct 2010 13:36:06 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9F2238FC1F for ; Fri, 29 Oct 2010 13:36:04 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA05942; Fri, 29 Oct 2010 16:36:01 +0300 (EEST) (envelope-from avg@icyb.net.ua) Message-ID: <4CCACDC0.7050802@icyb.net.ua> Date: Fri, 29 Oct 2010 16:36:00 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.11) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.5 MIME-Version: 1.0 To: Alexander Zagrebin References: <3D1C350B94A44E5D95BAA1596D1EBF13@vosz.local> <4CCABF73.8070707@icyb.net.ua> In-Reply-To: X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 7bit Cc: freebsd-stable@freebsd.org 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 13:36:06 -0000 on 29/10/2010 16:14 Alexander Zagrebin said the following: >>> I've noticed that ZFS on 8.1-STABLE still has problems with >> sendfile. >> >> Which svn revision, just in case? > > 8.1-STABLE > The source tree was updated 2010-10-27 OK, good. >>> When accessing a file at first time the transfer speed is >> too low, but >>> on following attempts the transfer speed is normal. >>> >>> How to repeat: >>> >>> $ dd if=/dev/random of=/tmp/test bs=1m count=100 >>> 100+0 records in >>> 100+0 records out >>> 104857600 bytes transferred in 5.933945 secs (17670807 bytes/sec) >>> $ sudo env LC_ALL=C /usr/libexec/ftpd -D >>> >>> The first attempt to fetch file: >>> >>> $ fetch -o /dev/null ftp://localhost/tmp/test >>> /dev/null 1% of 100 >> MB 118 kBps >>> 14m07s^C >>> fetch: transfer interrupted >>> >>> The transfer rate is too low (approx. 120 kBps), but any >> subsequent attempts >>> are success: >>> >>> $ fetch -o /dev/null ftp://localhost/tmp/test >>> /dev/null 100% of 100 >> MB 42 MBps >>> $ fetch -o /dev/null ftp://localhost/tmp/test >>> /dev/null 100% of 100 >> MB 47 MBps >> >> Can you do an experiment with the same structure but sendfile >> excluded? > > IMHO, ftpd hasn't an option to disable sendfile. Seems so. The source could be hacked (unconditional goto oldway in libexec/ftpd/ftpd.c, but anyway. > I've tried the nginx with > disabled sendfile (the nginx.conf contains "sendfile off;"): > > $ dd if=/dev/random of=test bs=1m count=100 > 100+0 records in > 100+0 records out > 104857600 bytes transferred in 5.892504 secs (17795083 bytes/sec) > $ fetch -o /dev/null http://localhost/test > /dev/null 100% of 100 MB 41 MBps > $ fetch -o /dev/null http://localhost/test > /dev/null 100% of 100 MB 44 MBps > $ fetch -o /dev/null http://localhost/test > /dev/null 100% of 100 MB 44 MBps > I am really surprised with such a bad performance of sendfile. Will you be able to profile the issue further? I will also try to think of some measurements. -- Andriy Gapon