SCSI Miniport- Throttled at 18 outstanding commands

All,

I have a fast setup here with a RAID box having 7 spindles. However,
despite the SCSI Miniport attempting to queue upto 64 commands at a time,
the number of outstanding commands seen by the box doesn’t increase over 18.

I’ve seen posts linking to an NT registry key that controls this.
Does this hold for Windows 2000 and XP too? (I am away from my test machine
for now …) Also, is the following pseudo the correct way to handle
NextRequest and NextLuRequest:

//in StartIO – EXECUTE SCSI
if (TargetFlags->TaggedQueuingActive &&

HostAdapter->ActiveCommandsPerLun[Srb->TargetId][Srb->Lun] <
HBA_MAXIMUM_TAGS)
ScsiPortNotification(NextLuRequest, HwDeviceExtension,
Srb->PathId, Srb->TargetId, Srb->Lun);
else
ScsiPortNotification(NextRequest,deviceExtension,NULL);

Max, Gary, Eric, I’ve seen posts from you before in this regard.
Perhaps you could comment?

Thanks,
Sirish

Maximums, 0-255, and NumberOfRequests, 0-150. These work for a QLogic and
BroadStor fibrechannel driver. You might download the driver files from the
QLogic site and read the ReadMe files. These and other values are described
there.


Gary G. Little
xxxxx@broadstor.com
xxxxx@inland.net

“Sirish Raghuram” wrote in message
news:xxxxx@ntdev…
>
> All,
>
> I have a fast setup here with a RAID box having 7 spindles. However,
> despite the SCSI Miniport attempting to queue upto 64 commands at a time,
> the number of outstanding commands seen by the box doesn’t increase over
18.
>
> I’ve seen posts linking to an NT registry key that controls this.
> Does this hold for Windows 2000 and XP too? (I am away from my test
machine
> for now …) Also, is the following pseudo the correct way to handle
> NextRequest and NextLuRequest:
>
> //in StartIO – EXECUTE SCSI
> if (TargetFlags->TaggedQueuingActive &&
>
> HostAdapter->ActiveCommandsPerLun[Srb->TargetId][Srb->Lun] <
> HBA_MAXIMUM_TAGS)
> ScsiPortNotification(NextLuRequest, HwDeviceExtension,
> Srb->PathId, Srb->TargetId, Srb->Lun);
> else
> ScsiPortNotification(NextRequest,deviceExtension,NULL);
>
> Max, Gary, Eric, I’ve seen posts from you before in this regard.
> Perhaps you could comment?
>
> Thanks,
> Sirish
>
>

create a key/keys
HKLM\DriverName\Parameters\Device[n]
and add in values
“MaximumSGList” decimal value say 51 // This helps in tweaking the physical memory used by SCSI port driver in allocating space for IOs
“NumberOfRequests” decimal value say 32 // this tells how many I/Os should the scsi port driver send per scsi bus.

Device by itself is for all buses, if you use Device0, Device1, … then you can override the global values set

This is the I/O throttling allowed in NT/Win2k (server version) based on per bus basis.
I dont know much about the professional OS version. For XP server (.Net server) they have a new driver called scsci store port driver, which I think allows lun level throttling.

Hope this helps,
Vinay
-----Original Message-----
From: Sirish Raghuram [mailto:xxxxx@vmware.com]
Sent: Tuesday, June 04, 2002 7:20 PM
To: NT Developers Interest List
Subject: [ntdev] SCSI Miniport- Throttled at 18 outstanding commands

All,

I have a fast setup here with a RAID box having 7 spindles. However,
despite the SCSI Miniport attempting to queue upto 64 commands at a time,
the number of outstanding commands seen by the box doesn’t increase over 18.

I’ve seen posts linking to an NT registry key that controls this.
Does this hold for Windows 2000 and XP too? (I am away from my test machine
for now …) Also, is the following pseudo the correct way to handle
NextRequest and NextLuRequest:

//in StartIO – EXECUTE SCSI
if (TargetFlags->TaggedQueuingActive &&

HostAdapter->ActiveCommandsPerLun[Srb->TargetId][Srb->Lun] <
HBA_MAXIMUM_TAGS)
ScsiPortNotification(NextLuRequest, HwDeviceExtension,
Srb->PathId, Srb->TargetId, Srb->Lun);
else
ScsiPortNotification(NextRequest,deviceExtension,NULL);

Max, Gary, Eric, I’ve seen posts from you before in this regard.
Perhaps you could comment?

Thanks,
Sirish


You are currently subscribed to ntdev as: xxxxx@troikanetworks.com
To unsubscribe send a blank email to %%email.unsub%%

> if (TargetFlags->TaggedQueuingActive &&

HostAdapter->ActiveCommandsPerLun[Srb->TargetId][Srb->Lun] <

Why do you account queue tags in a miniport? SCSIPORT does this for
you.

After delivering a request to a LUN to the miniport, the LUN is
“locked”.
It is unlocked in either:

  • completion of the request
  • NextLuRequest

NextRequest will not unlock the LUN - it will deliver the next request
for some other LUN on the same HBA. If there is no such requests -
NextRequest is a no-op.

Max

>I dont know much about the professional OS version. For XP server
(.Net server) they have a

new driver called scsci store port driver, which I think allows lun
level throttling.

Miniport can do this, but not calling NextLuRequest.

Max