最近寫了一個driver,將一個文件虛擬成SCSI DISK。該驅動程序本質上就是一個HBA driver。在驅動性能測試的時候,發現IO performance很低,在大量數據寫的時候只達到了4MB/s的吞吐量,在少許數據寫的時候,性能很高。該驅動的IO模型以下圖所示:ide
在驅動中對queuecommand的流程進行了打印分析,發現SCSI Middle Layer發送請求的速度很慢。這就代表SCSI command的queue已經滿了,因此SML沒法dispatch command。經過分析,問題聚焦在:爲何virtual HBA驅動寫文件的速度這麼慢呢?難道在內核中訪問文件的性能有問題?工具