From owner-freebsd-stable@FreeBSD.ORG Tue Aug 14 17:21:34 2007 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 5E81816A420 for ; Tue, 14 Aug 2007 17:21:34 +0000 (UTC) (envelope-from hg@queue.to) Received: from pickle.queue.to (pickle.queue.to [71.180.69.18]) by mx1.freebsd.org (Postfix) with ESMTP id E9C7713C510 for ; Tue, 14 Aug 2007 17:21:33 +0000 (UTC) (envelope-from hg@queue.to) Received: (qmail 68139 invoked from network); 14 Aug 2007 13:21:32 -0400 Received: from cally.queue.to (172.16.0.6) by pickle.queue.to with ESMTP; 14 Aug 2007 13:21:32 -0400 Message-ID: <46C1E49C.20701@queue.to> Date: Tue, 14 Aug 2007 13:21:32 -0400 From: Howard Goldstein User-Agent: Thunderbird 2.0.0.6 (X11/20070802) MIME-Version: 1.0 To: scottl@samsco.org References: <46C0A495.4060706@queue.to> <46C0A812.7080702@samsco.org> In-Reply-To: <46C0A812.7080702@samsco.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-stable@freebsd.org Subject: Re: 3ware RAID ctrlr: twe0: twe_map_request: malloc failed. 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: Tue, 14 Aug 2007 17:21:34 -0000 Scott Long wrote: > Howard Goldstein wrote: >> Would someone confirm (or disabuse!) me of the belief that these 3ware >> Escalade 8106-LP2 (2 port sata raid controllers) related messages are >> informational and the UFS device is retrying after it sees ENOMEM >> causing these? >> >> Aug 13 10:29:48 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 10:33:04 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 11:05:37 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 11:14:55 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 12:07:44 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 12:28:05 cally kernel: twe0: twe_map_request: malloc failed >> Aug 13 14:29:59 cally kernel: twe0: twe_map_request: malloc failed >> >> (Either way but particularly in the event the data are being lost is >> there a sysctl or kernel build option to supply a bit more memory in >> advance?) > > The system is doing unaligned I/O to the array (either via an app that > has a file opened O_DIRECT, or via I/O directly to the device node), and > there is corresponding memory pressure that is making the driver fail > at the re-alignment process. The problem is likely temporary and the > operation eventually succeeds after a few retries, but success is not > guaranteed, and failure will almost certainly cause system instability. > The fix is to rewrite the alignment code in the driver to use the > automatic, failure-free, alignment service that busdma provides. I'm > happy to provide direction to anyone who wants to tackle this. Alright, I like this idea since rebuilding the devices to avoid what I thought were unaligned access didn't work and I'm still seeing these messages and a performance hit I don't understand. I imagine I'll get better performance too if the driver can avoid doing its own alignment which probably isn't as optmized (?) The busdma man page looks nice and complete too - cool Could you point me to a model driver or two already using the busdma stuff?