From: "Justin T. Gibbs" <gibbs@scsiguy.com>
To: James Bottomley <James.Bottomley@SteelEye.com>
Cc: SCSI Mailing List <linux-scsi@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH] Fix aic7xxx del_timer_sync() deadlock
Date: Sun, 29 Feb 2004 15:23:06 -0700 [thread overview]
Message-ID: <230252704.1078093385@aslan.btc.adaptec.com> (raw)
In-Reply-To: <1078089009.1756.62.camel@mulgrave>
> On Sun, 2004-02-29 at 13:26, Justin T. Gibbs wrote:
>> This is not something worth black-listing. It is not a special case.
>> Busy and/or queue full with no I/O pending is a rare event. The user
>> will never notice this in practice other than their devices that need
>> this delay will work correctly in this situation. To put it another
>> way, the aic7xxx and aic79xx drivers have enforced this delay for almost
>> four years in Linux and I have yet to have someone complain that they
>> had poor device performance due to this delay. It is just not worth
>> the code complexity or potential of missing a broken device to "optimize"
>> this delay.
>
> Well, actually, it is: there are certain array vendors (who should
> justifiably remain nameless) who implemented the array queue resources
> as global controller pools. Thus, under heavy I/O to multiple LUNs,
> they become highly likely to throw BUSY or QUEUE FULL at zero depth and
> do it quite often. Pausing for fractions of a second here will cause
> nasty performance glitches in the benchmarks.
In the case of heavy I/O from one machine, the OS should be guaranteeing
fare access to resources. FreeBSD has done this using a round-robin
scheduler since '97. In my testing with that system, you get a few
queue full or busy events until the scheduler can rebalance and then
no stalls at all. This is exactly how it should be since busy and
queue full events rob precious bus bandwidth.
If you are using a multi-initiator setup with multiple hosts connecting
to the same controller, you typically are buying from someone who knows
how to build a properly functioning target (Well, either that or you
are going to get exactly what you paid for - bad performance in not
only this situation but most others). In this case, even if a global
transaction pool is being used, a resource fairness algorithm is employed
so that very quickly the resources are rebalanced based on load. From
the test matrices I've seen from customers of these types of boxes,
high transactional loads on multiple "completely independent" channels
is one of the first things they do. There is no tolerance for starving
out a channel except for the first command after a long period of no
activity.
> What about putting a rate limited printk in when the stutter is
> triggered? That way if someone still has one of the problem devices we
> should have a very good trace when they report the hang.
Feel free to log repeated busy events as you see fit, but so long
as the status of the last command sent that caused a device to go
offline is printed, I would have all I need to see that the device
was "perpetually busy".
--
Justin
next prev parent reply other threads:[~2004-02-29 22:23 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-27 18:26 [PATCH] Fix aic7xxx del_timer_sync() deadlock James Bottomley
2004-02-27 19:23 ` Justin T. Gibbs
2004-02-27 19:34 ` James Bottomley
2004-02-27 20:50 ` Justin T. Gibbs
2004-02-28 15:39 ` James Bottomley
2004-02-29 19:26 ` Justin T. Gibbs
2004-02-29 21:10 ` James Bottomley
2004-02-29 22:23 ` Justin T. Gibbs [this message]
2004-02-29 21:25 ` James Bottomley
2004-02-28 2:40 ` Jeff Garzik
2004-02-28 9:25 ` Jens Axboe
2004-02-28 23:50 ` Jeff Garzik
2004-02-29 9:13 ` Jens Axboe
2004-02-29 16:21 ` Jeff Garzik
2004-02-29 16:39 ` Jens Axboe
2004-02-29 17:28 ` Jeff Garzik
2004-02-29 17:55 ` Jens Axboe
2004-02-29 18:57 ` Justin T. Gibbs
2004-02-29 19:00 ` Jeff Garzik
2004-02-29 19:28 ` Justin T. Gibbs
2004-02-29 19:37 ` Jeff Garzik
2004-02-29 19:42 ` Justin T. Gibbs
2004-02-29 19:44 ` Jeff Garzik
2004-02-29 20:06 ` Jens Axboe
2004-02-29 20:20 ` Jeff Garzik
2004-02-29 20:27 ` Jens Axboe
2004-02-29 20:28 ` Jeff Garzik
2004-02-29 19:43 ` Jeff Garzik
2004-02-29 20:04 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=230252704.1078093385@aslan.btc.adaptec.com \
--to=gibbs@scsiguy.com \
--cc=James.Bottomley@SteelEye.com \
--cc=akpm@osdl.org \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox