From owner-freebsd-usb@FreeBSD.ORG Tue Feb 22 05:57:01 2011 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5E811106566B for ; Tue, 22 Feb 2011 05:57:01 +0000 (UTC) (envelope-from doconnor@gsoft.com.au) Received: from cain.gsoft.com.au (cain.gsoft.com.au [203.31.81.10]) by mx1.freebsd.org (Postfix) with ESMTP id D62338FC12 for ; Tue, 22 Feb 2011 05:57:00 +0000 (UTC) Received: from ur.gsoft.com.au (Ur.gsoft.com.au [203.31.81.44]) (authenticated bits=0) by cain.gsoft.com.au (8.14.4/8.14.3) with ESMTP id p1M5ukbW009212 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Tue, 22 Feb 2011 16:26:47 +1030 (CST) (envelope-from doconnor@gsoft.com.au) Mime-Version: 1.0 (Apple Message framework v1082) Content-Type: text/plain; charset=us-ascii From: "Daniel O'Connor" In-Reply-To: <201102181608.15368.hselasky@c2i.net> Date: Tue, 22 Feb 2011 16:26:45 +1030 Content-Transfer-Encoding: quoted-printable Message-Id: References: <9CF6C32F-E230-446B-94FC-C57F0F02B0E4@gsoft.com.au> <0F80A010-B97C-4D05-B604-5EF4B07EF248@gsoft.com.au> <201102181608.15368.hselasky@c2i.net> To: Hans Petter Selasky X-Mailer: Apple Mail (2.1082) X-Spam-Score: -2.51 () ALL_TRUSTED,BAYES_00,T_RP_MATCHES_RCVD X-Scanned-By: MIMEDefang 2.67 on 203.31.81.10 Cc: jhb@freebsd.org, freebsd-usb@freebsd.org Subject: Re: libusb performance on 8.1 X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Feb 2011 05:57:01 -0000 On 19/02/2011, at 1:38, Hans Petter Selasky wrote: > Which harddisk driver are you using? ATA? Yes. > My guess would be that taskqueues() in the HDD drivers are using = swi-queues,=20 > instead of ordinary lower-priority queues. For example in sys/dev/ata = I found: >=20 > TASK_INIT(&request->task, 0, ata_completed, request); > ATA_DEBUG_RQ(request, "finish taskqueue_swi"); > taskqueue_enqueue(taskqueue_swi, &request->task); >=20 > Which should perhaps just be "taskqueue_thread" instead of = "taskqueue_swi". I'll try changing it and seeing if it improves things. > I've noticed during USB debugging that if certain non-DATA-xfer SCSI = commands=20 > take time to complete, the whole system is waiting apparently, at = least X11.=20 > This might indicate that synchronous code is being run from interrupt = context. Interesting.. Although in the dual core case I wouldn't have thought it = would be a huge deal would it? I had to give the dual core system I was using for testing back so I am = currently using a single core with a non-ACHI capable chipset. I'll try = and get access to the previous system again for some more testing. Do you have any suggestions for how I can find out exactly where it's = sleeping in libusb? Or I suppose once it's in the kernel.. -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C