Bob Golding이 Storport 드라이버의 flow control에 대한 글을 썼습니다. HBA 에 많은 IO가 전달되어 처리를 하지 못하게 되면 BUSY를 Return 하고 IO를 제어하는 것에 대한 글 입니다. HBA의 커널 구조체에는 depth 라는 값이 있고 이 값보다 큰 IO 요청이 들어오게 되면 device queue라는 리스트에 IO가 들어가게 됩니다. 그리고 HBA가 BUSY를 return 하면 250ms 동안 Storport가 pause 되어 추가 IO가 전달되지 않게 합니다. 마지막으로 너무 많은 IO 요청이 들어오면 device는 queue full 상태가 됩니다. queue full 상태가 되면 25%의 IO가 완료될 때 까지 새로운 IO를 보내지 않습니다.

https://askbob.tech/go-with-the-flow/

 

HBA의 속성을 설정할 수 있는 registry key에 대한 설명인데 각 HBA 예를 들면 ql2300 과 같이 HBA 드라이버 이름을 사용해서 레지스트리 값을 설정해야 합니다. 최적화 된 값은 SAN 업체에서 해당 SAN 장비의 설정값을 참조해서 설정해야 합니다.

https://docs.microsoft.com/en-us/windows-hardware/drivers/storage/registry-entries-for-storport-miniport-drivers

NetApp 문서를 보면 HBA의 설정 값을 어떻게 변경하는지 상세히 설명되어 있습니다.

https://kb.netapp.com/app/answers/answer_view/a_id/1035032/~/how-to-increase-the-maximum-queue-depth-per-logical-unit-number-%28lun%29-in

NetApp 문서를 보면 Small, Mid-size, Large system에 맞추어서 적절한 queue depth를 설정하는 방법이 설명되어 있습니다.

https://library.netapp.com/ecmdocs/ECMP1196793/html/GUID-A055B184-0876-4376-9C75-35FE8C9BE832.html

 

Windows 에서 physical disk의 성능 측정하는 방법과 각 측정값이 Windows Device Driver Stack에서 어느 위치에 해당하는지 설명하고 있습니다.

https://blogs.technet.microsoft.com/askcore/2012/02/07/measuring-disk-latency-with-windows-performance-monitor-perfmon/

 

Windows Storage 부분에서 오류가 발생할 경우 Windows System Event log에 기록되기는 하지만 상세 분석을 진행하기에는 부족할 때가 있습니다. 상세 정보가 필요할 경우 storport에 대한 ETW 로그를 Enable 하여 Miniport Extension, PortNumber, PathID, LUN, Command, ScsiStatus, SRBStatus 등의 정보를 확인할 수 있습니다.

https://blogs.msdn.microsoft.com/ntdebugging/2010/04/22/storport-etw-logging-to-measure-requests-made-to-a-disk-unit/

 

NetApp 문서에서는 DataONTAP에서 LUN의 성능 통계치를 보여주고 있는데 특히 QFULL 상태에 대해서 설명하고 있습니다.

https://library.netapp.com/ecmdocs/ECMP1196995/html/GUID-F72F19C0-4A39-4912-A302-5F2308E069A6.html

+ Recent posts