Page MenuHomeFreeBSD

busdma: On systmes that use subr_busdma_bounce, measure deferred time
ClosedPublic

Authored by imp on Nov 11 2023, 6:21 AM.
Tags
None
Referenced Files
Unknown Object (File)
May 2 2024, 7:47 AM
Unknown Object (File)
Apr 29 2024, 8:00 AM
Unknown Object (File)
Apr 25 2024, 11:11 PM
Unknown Object (File)
Apr 25 2024, 11:11 PM
Unknown Object (File)
Apr 25 2024, 10:57 PM
Unknown Object (File)
Apr 25 2024, 10:51 PM
Unknown Object (File)
Feb 12 2024, 4:16 PM
Unknown Object (File)
Feb 11 2024, 3:46 PM
Subscribers

Details

Summary

Measure the total deferred time (from the time we decide to defer until
we try again) for busdma_load requests. On systems that don't ever
defer, there is no performnce change. Add new sysctl
hw.busdma.zoneX.total_deferred_time to report this (in
microseconds).

Normally, deferrals don't happen in modern hardware... Except there's a
lot of buggy hardware that can't cope with memory > 4GB or that can't
cross a 4GB boundary (or even more restrictive values), necessitating
bouncing. This will measure the effect on the I/Os of this deferral.

Sponsored by: Netflix

Diff Detail

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

Event Timeline

imp requested review of this revision.Nov 11 2023, 6:21 AM
This revision is now accepted and ready to land.Nov 11 2023, 4:26 PM

It looks OK to me, except getsbinuptime() by default gives a millisecond precision, not microsecond. Not a huge deal probably. Should average over time if it happen often.

In D42550#970845, @mav wrote:

It looks OK to me, except getsbinuptime() by default gives a millisecond precision, not microsecond. Not a huge deal probably. Should average over time if it happen often.

I think I got getsinuptime and sbinuptime confused...