Storport 큐 관리
고성능 스토리지 어댑터의 기능을 활용하려면 미니포트 드라이버가 디바이스 큐를 제어하고 이러한 큐를 일시 중지하고 재개하여 효율성을 극대화해야 합니다.
SCSI 포트 큐 모델에서 큐 관리는 포트 드라이버의 전용 도메인입니다. Storport 큐 모델에서 포트 드라이버는 미니포트 드라이버에 상당한 양의 큐 관리 제어를 제공하는 여러 큐 관리 지원 루틴을 제공합니다.
Storport 큐 모델에서 모든 요청은 논리 단위별 큐의 포트 드라이버에서 큐에 대기됩니다. 확장된 SRB 지원이 없으면 각 논리 단위에 최대 255개의 미해결 요청이 있을 수 있습니다. 그렇지 않으면 큐 깊이는 사용 가능한 시스템 리소스 또는 어댑터의 기능에 의해서만 제한됩니다. 큐 깊이에 대해 설정된 제한에 도달하면 Storport는 단위에 대한 미해결 요청 수가 큐 최대값 아래로 떨어질 때까지 해당 논리 단위에 대한 추가 요청을 보유합니다.
어댑터가 가질 수 있는 미해결 요청 수에 대한 Storport의 미리 정의된 제한은 없습니다. 예를 들어 큐 깊이가 255인 55개의 논리 단위가 연결된 어댑터는 한 번에 최대 14,025개(55 x 255) 요청까지 게시할 수 있습니다. 포트 드라이버의 큐 모델에 대한 설명은 다음 다이어그램을 참조하세요.
포트 드라이버의 큐 모델
어댑터와 논리 단위가 모두 요청을 받을 준비가 되면 시스템은 미니포트 드라이버의 HwStorBuildIo 및 HwStorStartIo 루틴을 해당 순서로 호출합니다.
SCSI 포트와 달리 Storport를 사용하면 미니포트 드라이버가 포트 드라이버에 사용 중인 상태를 알릴 수 있습니다. 이러한 통신은 논리 단위 또는 어댑터가 일시 중지되거나 사용 중일 때 미니포트 드라이버가 신호를 보낼 수 있도록 하는 다음 8개의 루틴에 의해 처리됩니다.
Storport 루틴 | 수행한 작업 |
---|---|
지정된 기간 동안 디바이스를 일시 중지합니다. |
|
일시 중지된 디바이스를 다시 시작합니다. |
|
지정된 기간 동안 어댑터를 일시 중지합니다. |
|
일시 중지된 어댑터를 다시 시작합니다. |
|
디바이스 큐가 지정된 수의 I/O 요청을 완료할 때까지 디바이스를 사용 중으로 만듭니다. |
|
사용 중인 디바이스가 요청을 다시 받을 준비가 되도록 합니다. |
|
지정된 수의 I/O 요청을 완료할 때까지 어댑터를 사용 중으로 만듭니다. |
|
사용 중인 어댑터를 다시 요청을 받을 준비가 되도록 합니다. |
디바이스가 일시 중지되거나 사용 중인 동안 포트 드라이버는 디바이스에 요청을 보내지 않습니다. 미니포트 드라이버가 사용 중인 상태(SRB_STATUS_BUSY 또는 SCSISTAT_BUSY)으로 요청을 완료하는 경우 포트 드라이버는 요청이 실패하거나 완료될 때까지 요청을 무기한 횟수만큼 다시 시도합니다.
Storport 큐 모델은 SCSI 포트 큐 모델에서 사용할 수 없는 명시적 큐 관리 루틴 집합을 제공하는 것 외에도 SCSI 포트에서 사용하는 암시적 큐 관리 루틴을 사용하지 않습니다. 특히 NextRequest 및 NextLuRequest 알림은 무시됩니다.