From owner-freebsd-stable@FreeBSD.ORG Fri Feb 13 10:55:59 2009 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 C61DA106564A; Fri, 13 Feb 2009 10:55:59 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.freebsd.org (Postfix) with ESMTP id 70A7C8FC0A; Fri, 13 Feb 2009 10:55:59 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from phobos.local ([192.168.254.200]) (authenticated bits=0) by pooker.samsco.org (8.14.2/8.14.2) with ESMTP id n1DAtrsA072344; Fri, 13 Feb 2009 03:55:54 -0700 (MST) (envelope-from scottl@samsco.org) Message-ID: <499551B9.7050805@samsco.org> Date: Fri, 13 Feb 2009 03:55:53 -0700 From: Scott Long User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 SeaMonkey/1.1.9 MIME-Version: 1.0 To: FreeBSD Current , FreeBSD Stable X-Enigmail-Version: 0.95.6 Content-Type: multipart/mixed; boundary="------------090508060706040908050304" X-Spam-Status: No, score=-4.4 required=3.8 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.1.8 X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on pooker.samsco.org Cc: Subject: HEADS UP: Major CAM performance regression 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, 13 Feb 2009 10:56:00 -0000 This is a multi-part message in MIME format. --------------090508060706040908050304 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit All, A major performance regression was introduced to the CAM subsystem in FreeBSD 7.1. The following configurations are known to be affected: VMWare ESX VMWare Fusion (using bt or lsilogic controller options) HP CISS RAID Some MPT-SAS combinations with SATA drives attached (Includes Dell SAS5/ir, but not PERC5/PERC6). Pure SCSI and SAS subsystems likely are NOT affected. Any hardware that uses the 'ata' driver is also definitely NOT affected. To determine if your installation is affected, run the following command as root: camcontrol tags da0 Substitute 'da0' with another appropriate drive device number, if needed. Note that this ONLY AFFECTS 'da' DEVICES. If your disks are 'ad' devices, they are NOT affected. The result from running this command should be an output similar to the following: (pass0:mpt0:0:8:0): device openings: 255 If, instead, it reports a value of '1', you are likely affected. Note that it may be normal for USB memory devices to report a low number. Also, many legacy SCSI disks, and devices that are not disks, may also be expected to report a low number. The effect of this problem is that only one I/O command will be issued to the controller and disk at a time, instead of overlapping multiple commands in parallel. This causes significantly higher latency in servicing moderate and heavy I/O workloads, leading to very poor performance. Performance can be easily compared by downgrading to FreeBSD 7.0. I have committed a fix for this problem for FreeBSD 8-CURRENT as of SVN revision 188570. FreeBSD 7-STABLE will be updated with the fix in a few days once I've gotten confirmation that the fix works and doesn't cause any adverse side-effects. Anyone wanting to help in this validation effort should apply the attached patch to their kernel source tree and recompile. Please contact me directly by email to report if the problem is fixed for you. If the validation process goes smoothly, I will work with the release engineering team to turn this fix into an official errata update for FreeBSD 7.1. Thanks in advance for your help. Scott --------------090508060706040908050304 Content-Type: text/x-diff; name="cam_tags.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="cam_tags.diff" Index: cam_xpt.c =================================================================== --- cam_xpt.c (revision 188569) +++ cam_xpt.c (revision 188570) @@ -6143,10 +6143,9 @@ xpt_schedule(periph, priority); return; } - xpt_release_ccb(done_ccb); - softc->action = PROBE_TUR_FOR_NEGOTIATION; - xpt_schedule(periph, priority); - return; + + csio->data_ptr = NULL; + /* FALLTHROUGH */ } case PROBE_SERIAL_NUM_1: --------------090508060706040908050304--