SPDK問題排查之二

下面記錄SPDK常見錯誤的解決方法,以免重複走彎路

讀寫沒對齊 512B

現象:

nvme_qpair.c: 137:nvme_io_qpair_print_command: *NOTICE*: WRITE sqid:1 cid:191 nsid:1 lba:0 len:65536

nvme_qpair.c: 306:nvme_qpair_print_completion: *NOTICE*: INVALID FIELD (00/02) sqid:1 cid:191 cdw0:0 sqhd:0002 p:1 m:0 dnr:1

解決辦法:分析代碼允許記錄:

TRACE: 09-12 10:45:02:   * 0 common/spdknvme_io.c:296] OP: Write, Offset:0, Size: 13

根據SPDK NVME 接口讀寫要求,必需512B對齊。改成了512B 之後,上面報錯消失。

不是從大頁內存讀寫

現象

starting write I/O failed, push back, reback to previous status
starting write I/O failed, push back, reback to previous status

解決辦法:
SPDK讀寫的內存必須是基於EAL 大頁申請的內存,這部分內存通過EAL DPDK庫能夠映射到用戶態,如果用普通的內存,無法做DMA以供NVME hardware queue 直接使用,因此需要檢查讀寫的接口使用的內存是否都是從大頁分配的。檢查了一下,果然這裏不符合預期,修改檢查允許正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章