======================================================================= What are the equations for calculating queue depth ======================================================================= ------------------------------------------------------------------------- DF ------------------------------------------------------------------------- [9200] Queue Depth = 256 / Total number of LU's per Port <= 32 [9500V] Queue Depth = 512 / Total number of LU's per Port <= 32 [AMS 200] Queue Depth = 512 / Total number of LU's per Port <= 32 [WMS 100] Queue Depth = 512 / Total number of LU's per Port <= 32 [AMS 500] Queue Depth = 512 / Total number of LU's per Port <= 32 [WMS 1000] Queue Depth = 512 / Total number of LU's per Port <= 32 ------------------------------------------------------------------------- RAID ------------------------------------------------------------------------- [7700E] Queue Depth = 256 / Total number of LU's per Port <= 32 [9900] Queue Depth = 512 / Total number of LU's per Port <= 32 [9900V] Queue Depth = 512 / Total number of LU's per Port <= 32 [USP] Queue Depth = 1024 / Total number of LU's per Port <= 32 [NCS] Queue Depth = 1024 / Total number of LU's per Port <= 32 [USPV] Queue Depth = 2048 / Total number of LU's per Port <= 32 [USPVM] Queue Depth = 2048 / Total number of LU's per Port <= 32 ------------------------------------------------------------------------- Total number of LU's per Port must not exceed a Queue Depth value of 32 ------------------------------------------------------------------------- IMPORTANT: * Example (1) If the user has configured a total of 2 LUNs to port -0B- on a 9570, the equation would be: Queue Depth= 512 /2 = 256 However, because 256 is NOT <= 32 you would set the Queue Depth to 32! * Example (2) If the user has configured a total of 2 LUNs to port -0A- on a 9570, the equation would be: Queue Depth= 512 /67 = 7.6 (always round down to the next EVEN integer). ======================================================================= Where do I set the Queue Depth? ======================================================================= You set the Queue Depth in the respective HBA vendor utility. HBAnywhere for Emulex, Sansurfer for Qlogic, etc ... ======================================================================= What is Command TAG Queuing? ======================================================================= SCSI Command Tag Queuing refers to queuing multiple commands to a SCSI device. Queuing to the SCSI device can improve performance because the device itself determines the most efficient way to order and process commands. ======================================================================= How many commands can be queued? ======================================================================= -Each 7700E port can queue up to 256 commands -Each 9900 port can queue up to 256 commands -Each 9900V port can queue up to 512 commands (The 512 queued commands are shared between the Host Domains, 512 total per physical port.) -Each TagmaStore port can queue up to 1024 commands. (The 1024 queued commands are shared between the Host Domains, 1024 total per physical port.) -Each 9200 port can queue up to 256 commands. -Each 9500V port can queue up to 512 commands. (The 512 queued commands are shared between the Host Domains, 512 total per physical port.) ======================================================================= How are queue slots distributed among the LUNs? ======================================================================= The number of slots per LUN is dynamic. The slots are assigned on a first come first serve basis until all the slots within the physical port are used. On t he platforms that support Host Storage Domains ( HSD ), the number of slots per HSD is also dynamic, and each HSD is individually not limited except that the total number of queued commands among all the HSDs defined on a physical port is limited to what the physical port supports. ======================================================================= What happens when all the slots for a port are used? ======================================================================= When the queue is full for a port, subsequent commands are rejected with Q_FULL indication. The host needs to retry the command. Performance degradation will occur as the number of host retry operations increase. Serious problems may occur when the host maximum retry count has been reached and the device is still responding Q_FULL. Is it possible to have data corruption for having exceeded the queue depth limit? Data corruption has never been experienced by having queue depth exceed limits. However, be aware of the red note in the above paragraph. ======================================================================= Good Practice, Things to watch for: ======================================================================= 1) Setup the host driver parameters so that Q_Full does not occur excessively ( preferably never ). Use the 'Queue Depth' and 'MaxTags' or equivalent driver parameters to do so. 2) Setup the host driver parameters so that all LUN attached to a port or host domain have the same queue depth. 3) Setup the host driver parameters so that all LUN in a volume group have the same queue depth. 4) When setting driver parameters, consider all host sharing a port or a host domain.