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
Unknown Object (File)
Wed, Sep 25, 6:16 AM
Unknown Object (File)
Sat, Sep 21, 12:45 PM
Unknown Object (File)
Thu, Sep 19, 2:29 PM
Unknown Object (File)
Mon, Sep 16, 10:39 PM
Unknown Object (File)
Sun, Sep 15, 9:37 PM
Unknown Object (File)
Sep 1 2024, 4:04 AM
Unknown Object (File)
Aug 30 2024, 9:01 PM
Unknown Object (File)
Aug 30 2024, 8:58 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