Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Feb 1999 11:33:30 +1030
From:      Greg Lehey <grog@lemis.com>
To:        shimon@simon-shapiro.org
Cc:        "Bryn Wm. Moslow" <bryn@spacemonster.org>, freebsd-isp@FreeBSD.ORG
Subject:   Re: DPT 3334UW RAID-5 Slowness / Weird FS problems
Message-ID:  <19990219113330.C14890@lemis.com>
In-Reply-To: <XFMail.990217120701.shimon@simon-shapiro.org>; from Shimon Shapiro on Wed, Feb 17, 1999 at 12:07:01PM -0500
References:  <19990216105959.P2207@lemis.com> <XFMail.990217120701.shimon@simon-shapiro.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, 17 February 1999 at 12:07:01 -0500, Shimon Shapiro wrote:
>
> Greg Lehey, On 16-Feb-99 you wrote:
>>  On Monday, 15 February 1999 at 13:08:22 -0800, Bryn Wm. Moslow wrote:
>>> I recently installed a DPT 3334UW with 64MB cache in a mail server
>>> running RAID-5 with a 32K stripe on an external case on which the user
>>> mail spool is mounted. The array is comprised of 6 Seagate Ultra Wide
>>> 4.5GB SCA drives. The system is a P2 300 with 384MB and uses an
>>> additional Seagate UW drive for boot, /usr, /var, swap, and staff home
>>> directories. It doesn't go into swap often but if it does it only hits
>>> about 5 to 10 MB. The system is running FreeBSD 2.2.8.
>>
>>  I don't know the DPT controllers, but 32 kB stripes are far too small.
>>  For better performance, you should increase them to between 256 kB and
>>  512 kB.  Small stripe sizes create many more I/O requests at the drive
>>  level.
>
> It highly depends on the amount of cache memory on the card and the nature
> of the access.  If I/O is sequential in nature, then Greg is correct.  If
> it is highly fragmented and random (as in most DBMS), then Greg is only
> correct if there is a lot of memory and access is to large blocks.

As I said, FreeBSD I/O requests range in size between 512 bytes and 60
kB.  With a 16 kB stripe size, you would need to have an average block
size of about 1 kB in order to avoid significant performance impact.
DBMSs tend to read and write blocks of 16 kB or so.

>>> If I format with the default settings to newfs, everything works
>>> fine. The same hang also occurs if I try to do 16K block size. I
>>> haven't tried anything bigger as I had an extremely tight window in
>>> which to get the machine online.
>>
>>  You should consider that once you have set the stripe size, you're
>>  stuck with it.  Unless the DPTs have a good reason (like "not
>>  supported"), take a 256 kB stripe size.
>
> a.  Newfs parameters have nothing to do with the SCSI HBA (DSPT or
>     otherwise.  If 16k block size hangs, it is a bug elsewhere.
>     I studied such complaint long, long ago (on FreeBSD 3.0) and the
>     requests did not even hit the DPT.
>     But, like Greg said, this has almost no bearing on perfromance...
>
> b.  The DPT firmware will take up to 1MB stripes.  Beware there is no more
>     than 64MB of cache on the card (if that much), and very large stripes
>     may consume all the cache quickly and inefficiently.

Do you have any information about how the controller uses the cache?
From the design of Vinum, I would expect that these memory areas would
not be cached.  Vinum will never use more memory than is needed to
satisfy the request, so this makes a maximum of 60 kB per request.
Memory use for fragmented requests is higher, not lower.

Greg
--
See complete headers for address, home page and phone numbers
finger grog@lemis.com for PGP public key


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990219113330.C14890>