Closed hiroyuki-sato closed 10 years ago
クライアント側で再送要求を出した後、サーバ側で非同期エラーが出ているのが問題でした。 なぜ非同期エラーが出たかの原因は調査中です。
[2014-03-09 02:02:18.375,128,597] RCV1 RC/READ_REQ PORT:1 PSN:ac0629 LEN:0048 SLID:0003 DLID:0001 DQPN:fcdfdb
[2014-03-09 02:02:18.375,128,890] RCV2 RC/READ_REQ PORT:1 PSN:ac0629 DATA:0016 SQPN:fcdfdb
[2014-03-09 02:02:18.375,131,167] ASYC QP_ACCESS_ERR OID:fcdfdb
原因が分かりました。RDMA READとAtomic操作は同時実行数(nr_rd_atomic)に上限)max_rd_atomic)があるのですが、ib_read_bwはその上限数までRDMA READの同時発行を行います。 しかしpib側のバグでLocal ACK TimeoutによるRDMA READ要求の再送時にnr_rd_atomicを足してしまい、max_rd_atomicを越えていました。
pib https://github.com/nminoru/pib/commit/fba780bb5e44339085a1619ddcef1088fcb537d4 で修正を行いましたので、ASYC QP_ACCESS_ERRが出ることはもうないはずです。
またRDMA READがリトライをかけると、RDMA READの同時実行数の上限を1に制限し、以降にRDMA READが成功すると+1づつ元に戻すというフロー制御を入れたので、極端な過負荷状態でなければib_read_bwは通るはずです。
問題
ib_read_bwが停止してしまう
環境
その他
ハードウェアが貧弱なのでそのせいかもしれません。ESXi5.5上のCentOSです。
server
client