Page MenuHomeFreeBSD

nvme: Do not rearm timeout for commands without one.
ClosedPublic

Authored by mav on Jan 7 2022, 4:47 PM.
Tags
None
Referenced Files
F102926937: D33781.id.diff
Mon, Nov 18, 8:26 PM
F102922006: D33781.id.diff
Mon, Nov 18, 6:50 PM
Unknown Object (File)
Sat, Nov 16, 8:24 PM
Unknown Object (File)
Thu, Nov 14, 2:24 PM
Unknown Object (File)
Fri, Nov 8, 10:04 PM
Unknown Object (File)
Fri, Nov 8, 7:24 PM
Unknown Object (File)
Sun, Oct 27, 2:35 PM
Unknown Object (File)
Sun, Oct 27, 2:28 PM
Subscribers

Details

Summary

Admin queue almost always have several ASYNC_EVENT_REQUEST outstanding. They have no timeouts, but their presence in qpair->outstanding_tr caused useless timeout callout rearming twice a second.

While there, relax timeout callout period from 0.5s to 0.5-1s to improve aggregation. Command timeouts are measured in seconds, so we don't need to be precise here.

Test Plan

Without the patch observe periodic callouts for completely idle NVMe SSDs. With the patch confirmed callouts firing only once per queue after I/O command completion.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

mav requested review of this revision.Jan 7 2022, 4:47 PM

This looks great! Thanks for the improvement. You're right, the timeout is there as a backstop and except for a few admin commands the error will be less than 1%. Even for those admin commands, this won't create a problem since they are infrequent.

This revision is now accepted and ready to land.Jan 7 2022, 4:50 PM