tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: FIXED: mpt Serious performance issues

On Tue, Feb 08, 2011 at 03:06:41PM +0100, Stephan wrote:
> Hi all!
> >At the very last this change should apply only when the controller is in
> >RAID mode.
> But what´s the sense in simply scrubbing all mode pages on driver
> initialisation?

Reset it to a known state.

> >In this case, the driver should also probably ignore the
> >modes set from the upper layer.
> Does this have an impact to the scsipi layer, e.g. would the SCBs then
> be different?

No, but it's just wrong to apply the modes computed for the
virtual disk, to a physical disk.

> >So the controller does not present us any such page for the logical target
> >device it provides?
> Not to my knowledge...
> >If the firmware vendor did *not* get it wrong, then there is a separate
> >page which holds these settings for the "logical" disk, and when we are
> >operating in RAID mode we need to use that one instead of ever accessing
> >the 16 pages for the physical disks.  Do you have enough documentation
> >to say if it actually works this way?
> Mhhh... you could also have one RAID set containing 2 disks, and 2
> other disks not being part of any RAID set. So the driver needs to
> decide weather a target is part of an array or not. Unfortunately I do
> not have any kind of documentation. There are other drivers (e.g.
> Linux and FreeBSD) which serve as a reference. I´m currently making
> the driver capable of reading RAID-settings with "mpt_mpilib.h" being
> the only documentation I have ;) As a start, removing the said code
> isn´t the best solution but stops the driver making things worse...

for your configuration. I could immagine that not resetting the
mode pages could make it non-functionnal in some other

> I tested this on 2 different servers (FSC and IBM) sucessfully. While

both x86 I guess, and both with the BIOS enabled.

> SCSI controllers are fine with that, SAS controllers still do not work
> optimal (120MB reading, only 1 disk is being accessed; 25MB write
> speed). There are 2 issues I see:
> 1)Write caching is not enabled by default in contrast to SCSI controllers.
> 2)Mode changing is ignored; tagged queueing won´t be enabled:
>         if (!mpt->is_scsi) {
>                 /*
>                  * SCSI transport settings don't make any sense for
>                  * Fibre Channel; silently ignore the request.
>                  */
>                 return;
>         }
> => 1)
> I have no idea how to enable write caching. Just changing the RAID
> page and sending it back to the controller doesn´t work:
> mpt0: DEBUG: Write Cache: 0
> mpt0: DEBUG: Applying write caching hack...
> mpt0: DEBUG: Sending setting to adapter...
> mpt0: page type 0x8 not changeable
> mpt0: DEBUG: ERROR sending setting to adapter...
> The Linux driver enables write caching by default.
> => 2)
> I made some modifications to mpt_set_xfer_mode() so that
> -for FC, settings are completely ignored.
> -for SAS, TQ and disconnecting are configured but no parallel port settings.
> -for SCSI the behaving is still the same

for FC, tagged queuing should also work AFAIK.

Manuel Bouyer <>
     NetBSD: 26 ans d'experience feront toujours la difference

Home | Main Index | Thread Index | Old Index