Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2012 10:51:42 +0530
From:      "Desai, Kashyap" <Kashyap.Desai@lsi.com>
To:        "Kenneth D. Merry" <ken@freebsd.org>, John <jwd@freebsd.org>
Cc:        "freebsd-scsi@freebsd.org" <freebsd-scsi@freebsd.org>
Subject:   RE: mps driver chain_alloc_fail / performance ?
Message-ID:  <B2FD678A64EAAD45B089B123FDFC3ED7299CF90E7C@inbmail01.lsi.com>
In-Reply-To: <20120114232245.GA57880@nargothrond.kdm.org>
References:  <20120114051618.GA41288@FreeBSD.org> <20120114232245.GA57880@nargothrond.kdm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Which driver version is this ? In our 09.00.00.00 Driver (which is in pipel=
ine to be committed) has 2048 chain buffer counter.
And our Test team has verified it with almost 150+ Drives.

As suggested by Ken, Can you try increasing MPS_CHAIN_FRAMES  to 4096 OR 20=
48

~ Kashyap

> -----Original Message-----
> From: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-
> scsi@freebsd.org] On Behalf Of Kenneth D. Merry
> Sent: Sunday, January 15, 2012 4:53 AM
> To: John
> Cc: freebsd-scsi@freebsd.org
> Subject: Re: mps driver chain_alloc_fail / performance ?
>=20
> On Sat, Jan 14, 2012 at 05:16:18 +0000, John wrote:
> > Hi Folks,
> >
> >    I've started poking through the source for this, but thought I'd
> > go ahead and post to ask other's their opinion.
> >
> >    I have a system with 3 LSI SAS hba cards installed:
> >
> > mps0: <LSI SAS2116> port 0x5000-0x50ff mem 0xf5ff0000-
> 0xf5ff3fff,0xf5f80000-0xf5fbffff irq 30 at device 0.0 on pci13
> > mps0: Firmware: 05.00.13.00
> > mps0: IOCCapabilities:
> 285c<ScsiTaskFull,DiagTrace,SnapBuf,EEDP,TransRetry,EventReplay>
> > mps1: <LSI SAS2116> port 0x7000-0x70ff mem 0xfbef0000-
> 0xfbef3fff,0xfbe80000-0xfbebffff irq 48 at device 0.0 on pci33
> > mps1: Firmware: 07.00.00.00
> > mps1: IOCCapabilities:
> 1285c<ScsiTaskFull,DiagTrace,SnapBuf,EEDP,TransRetry,EventReplay,HostDis
> c>
> > mps2: <LSI SAS2116> port 0x6000-0x60ff mem 0xfbcf0000-
> 0xfbcf3fff,0xfbc80000-0xfbcbffff irq 56 at device 0.0 on pci27
> > mps2: Firmware: 07.00.00.00
> > mps2: IOCCapabilities:
> 1285c<ScsiTaskFull,DiagTrace,SnapBuf,EEDP,TransRetry,EventReplay,HostDis
> c>
>=20
> The firmware on those boards is a little old.  You might consider
> upgrading.
>=20
> >    Basically, one for internal and two for external drives, for a
> total
> > of about 200 drives, ie:
> >
> > # camcontrol inquiry da10
> > pass21: <HP EG0600FBLSH HPD2> Fixed Direct Access SCSI-5 device
> > pass21: Serial Number 6XR14KYV0000B148LDKM
> > pass21: 600.000MB/s transfers, Command Queueing Enabled
>=20
> That's a lot of drives!  I've only run up to 60 drives.
>=20
> >    When running the system under load, I see the following reported:
> >
> > hw.mps.0.allow_multiple_tm_cmds: 0
> > hw.mps.0.io_cmds_active: 0
> > hw.mps.0.io_cmds_highwater: 772
> > hw.mps.0.chain_free: 2048
> > hw.mps.0.chain_free_lowwater: 1832
> > hw.mps.0.chain_alloc_fail: 0         <--- Ok
> >
> > hw.mps.1.allow_multiple_tm_cmds: 0
> > hw.mps.1.io_cmds_active: 0
> > hw.mps.1.io_cmds_highwater: 1019
> > hw.mps.1.chain_free: 2048
> > hw.mps.1.chain_free_lowwater: 0
> > hw.mps.1.chain_alloc_fail: 14369     <---- ??
> >
> > hw.mps.2.allow_multiple_tm_cmds: 0
> > hw.mps.2.io_cmds_active: 0
> > hw.mps.2.io_cmds_highwater: 1019
> > hw.mps.2.chain_free: 2048
> > hw.mps.2.chain_free_lowwater: 0
> > hw.mps.2.chain_alloc_fail: 13307     <---- ??
> >
> >    So finally my question (sorry, I'm long winded): What is the
> > correct way to increase the number of elements in sc->chain_list
> > so mps_alloc_chain() won't run out?
>=20
> Bump MPS_CHAIN_FRAMES to something larger.  You can try 4096 and see
> what
> happens.
>=20
> > static __inline struct mps_chain *
> > mps_alloc_chain(struct mps_softc *sc)
> > {
> >         struct mps_chain *chain;
> >
> >         if ((chain =3D TAILQ_FIRST(&sc->chain_list)) !=3D NULL) {
> >                 TAILQ_REMOVE(&sc->chain_list, chain, chain_link);
> >                 sc->chain_free--;
> >                 if (sc->chain_free < sc->chain_free_lowwater)
> >                         sc->chain_free_lowwater =3D sc->chain_free;
> >         } else
> >                 sc->chain_alloc_fail++;
> >         return (chain);
> > }
> >
> >    A few layers up, it seems like it would be nice if the buffer
> > exhaustion was reported outside of debug being enabled... at least
> > maybe the first time.
>=20
> It used to report being out of chain frames every time it happened,
> which
> wound up being too much.  You're right, doing it once might be good.
>=20
> >    It looks like changing the related #define is the only way.
>=20
> Yes, that is currently the only way.  Yours is by far the largest setup
> I've seen so far.  I've run the driver with 60 drives attached.
>=20
> >    Does anyone have any experience with tuning this driver for high
> > throughput/large disk arrays? The shelves are all dual pathed, and
> with
> > the new gmultipath active/active support, I've still only been able to
> > achieve about 500MBytes per second across the controllers/drives.
>=20
> Once you bump up the number of chain frames to the point where you
> aren't
> running out, I doubt the driver will be the big bottleneck.  It'll
> probably
> be other things higher up the stack.
>=20
> > ps: I currently have a ccd on top of these drives which seems to
> > perform more consistenty then zfs. But that's an email for a different
> > day :-)
>=20
> What sort of ZFS topology did you try?
>=20
> I know for raidz2, and perhaps for raidz, ZFS is faster if your number
> of
> data disks is a power of 2.
>=20
> If you want raidz2 protection, try creating arrays in groups of 10, so
> you
> wind up having 8 data disks.
>=20
> Ken
> --
> Kenneth Merry
> ken@FreeBSD.ORG
> _______________________________________________
> freebsd-scsi@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
> To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org"



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