Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 65918 invoked from network); 1 Nov 2005 00:11:20 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 1 Nov 2005 00:11:20 -0000 Received: (qmail 24278 invoked by uid 500); 1 Nov 2005 00:11:19 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 24254 invoked by uid 500); 1 Nov 2005 00:11:19 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 24245 invoked by uid 99); 1 Nov 2005 00:11:19 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Oct 2005 16:11:19 -0800 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_00_10,HTML_MESSAGE,RCVD_IN_BL_SPAMCOP_NET,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of francois.orsini@gmail.com designates 66.249.82.192 as permitted sender) Received: from [66.249.82.192] (HELO xproxy.gmail.com) (66.249.82.192) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Oct 2005 16:11:14 -0800 Received: by xproxy.gmail.com with SMTP id t13so1062270wxc for ; Mon, 31 Oct 2005 16:10:57 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=e93rwyWjFgo6asIbDCHQfWXKeieR0uv7qjSyIEO08Rqmo5Y0sRYdbMvNkRfHIjAgIcb1PkACXypqleFcHbfamUiJqudRq5mZe+nTT1jZQK+XaFNXyCTQ+YDFKqIuSujz7xQlyXWLi0LmMc0QDree6sgrao4FmjyE2daUDSrcXiU= Received: by 10.64.251.4 with SMTP id y4mr645567qbh; Mon, 31 Oct 2005 16:10:57 -0800 (PST) Received: by 10.64.208.7 with HTTP; Mon, 31 Oct 2005 16:10:57 -0800 (PST) Message-ID: <7921d3e40510311610vacde68ep42831cbdfe750700@mail.gmail.com> Date: Mon, 31 Oct 2005 16:10:57 -0800 From: Francois Orsini To: derby-dev@db.apache.org Subject: Re: Derby I/O issues during checkpointing In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_273_13369766.1130803857543" References: X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ------=_Part_273_13369766.1130803857543 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline In order for a thread to generate many outstanding I/O calls at a time, it should *not* block on an I/O in the first place if it does not have to - this is what you observed - Typically, we would want to be able to issue Asynchronous I/O's so that a given thread at the low-level does not block but rather is allowed to check for I/O completion at a later time as appropriate, while producing additional I/O requests (i.e. read-ahead) - Asynchronous I/O's in Java is not something you used to get out of the box and people have implemented it via I/O worker threads (simulated Async I/O's) or/and using JNI (calling into OS proprietary asynchronous I/O drive= r on Unix FSs and Windows (NT)). I think the approach you have made is good in terms of principles and prototyping but I would think we would need to implement something more sophisticated and having an implementation of worker threads simulating asynchronous I/Os (whether we end-up using Java Asynchronous I/O in NIO or not). I think we could even see additional performance gain. Just my 0.02 cents... --francois ------=_Part_273_13369766.1130803857543 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline In order for a thread to generate many outstanding I/O calls at a time, it should *not* block on an I/O in the first place if it does not have to - this is what you observed - Typically, we would want to be able to issue Asynchronous I/O's so that a given thread at the low-level does not block but rather is allowed to check for I/O completion at a later time as appropriate, while producing additional I/O requests (i.e. read-ahead) - Asynchronous I/O's in Java is not something you used to get out of the box and people have implemented it via I/O worker threads (simulated Async I/O's) or/and using JNI (calling into OS proprietary asynchronous I/O driver on Unix FSs and Windows (NT)).

I think the approach you have made is good in terms of principles and prototyping but I would think we would need to implement something more sophisticated and having an implementation of worker threads simulating asynchronous I/Os (whether we end-up using Java Asynchronous I/O in NIO or not). I think we could even see additional performance gain.

Just my 0.02 cents...

--francois
------=_Part_273_13369766.1130803857543--