Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1945890AbXBVBdJ (ORCPT ); Wed, 21 Feb 2007 20:33:09 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1945934AbXBVBdJ (ORCPT ); Wed, 21 Feb 2007 20:33:09 -0500 Received: from wr-out-0506.google.com ([64.233.184.239]:32197 "EHLO wr-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1945890AbXBVBdH (ORCPT ); Wed, 21 Feb 2007 20:33:07 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=ZtShZi2oy22uufubtTEzNC91uybI/rjamePA62DWxRZ/lyINk7I8TVxNGjBXKtd/kdjhDCDipormzDS4XfMCE6K2PdtEJIWaS3t8hmti9a6e1g+fo0kjgFQbg+U/s9vh7jyaXul32JwQiyGc6r9ayKz1WQxo8t55EdZ/D45bFhQ= Message-ID: Date: Wed, 21 Feb 2007 17:33:05 -0800 From: "Michael K. Edwards" To: "Ingo Molnar" Subject: Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 Cc: linux-kernel@vger.kernel.org, "Linus Torvalds" , "Arjan van de Ven" , "Christoph Hellwig" , "Andrew Morton" , "Alan Cox" , "Ulrich Drepper" , "Zach Brown" , "Evgeniy Polyakov" , "David S. Miller" , "Suparna Bhattacharya" , "Davide Libenzi" , "Jens Axboe" , "Thomas Gleixner" In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20070221211355.GA7302@elte.hu> <20070221225711.GB32031@elte.hu> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2263 Lines: 48 On 2/21/07, Michael K. Edwards wrote: > You won't be able to do it later if you don't design for it now. > Don't reinvent the square wheel -- there's a model to follow that was > so successful that it has killed all alternate models in its sphere. > Namely, IEEE 754. But please try not to make pipeline flushes suck as > much as they did on the i860. To understand why I harp on IEEE 754 as a sane model for pipelined AIO, you might consider reading (at least parts of): http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf People who write industrial-strength floating point programs rely on the IEEE floating point semantics to avoid having to check every result of every arithmetic step to see whether it is a valid input to the next step. NaNs and +/-0 and overflows and all that jazz are essential to efficient coding of things like matrix inversion, because the only alternative is simply to fail. But in-line indications of an exceptional result aren't enough, because it may or may not have been a coding error, and you may need fine-grained control over which "failure conditions" are within the realm of the expected and which are not. Here's a quotable bit from Kahan and Darcy's polemic: To achieve Floating-Point Predictability: Limit programmers' choices to what is reasonable and necessary as well as parsimonious, and Limit language implementors'choices so as always to honor the programmer's choices. To do so, language designers must understand floating-point well enough to validate their determination of "what is reasonable and necessary," or else must entrust that determination to someone else with the necessary competency. Now I ain't that "someone else", when it comes to AIO pipelining. But they're out there. Figure out how to create an AIO model that honors the RDBMS programmer's choices efficiently on a NUMA box without making him understand NUMA, and you really will have created something for the ages. Cheers, - Michael - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/