Page MenuHomeFreeBSD

cc_cubic: Use units of micro seconds (usecs) instead of ticks in rtt.
ClosedPublic

Authored by cc on May 20 2023, 3:22 PM.
Tags
None
Referenced Files
F153244034: D40185.id122166.diff
Mon, Apr 20, 12:52 AM
Unknown Object (File)
Fri, Apr 10, 7:56 PM
Unknown Object (File)
Mon, Mar 30, 12:09 AM
Unknown Object (File)
Thu, Mar 26, 8:14 AM
Unknown Object (File)
Thu, Mar 26, 2:49 AM
Unknown Object (File)
Wed, Mar 25, 1:11 PM
Unknown Object (File)
Mar 12 2026, 11:43 AM
Unknown Object (File)
Mar 4 2026, 3:58 AM

Details

Reviewers
rscheff
tuexen
Group Reviewers
transport
Summary

This improves TCP friendly cwnd in cases of low latency high drop rate
networks.
Tests show +42% and +37% better performance in 1Gpbs and 10Gbps cases.

test result in detail: testD40185

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 51581
Build 48472: arc lint + arc unit

Event Timeline

cc requested review of this revision.May 20 2023, 3:22 PM
cc edited the summary of this revision. (Show Details)
sys/netinet/cc/cc_cubic.h
113

Why isn't this converted?

232

Should there be a space between * and tick?

sys/netinet/cc/cc_cubic.h
113

I am not sure if there is a high resolution timer to use for the base stack. So this is a workaround.

correct the lower bound for min_rtt_usecs and correct some space and comments

You might want to wait also for Richards' approval, since he is much more familiar with the code than I am.

This revision is now accepted and ready to land.May 26 2023, 5:48 PM
sys/netinet/cc/cc_cubic.h
113

Secondly, cubic_data->t_last_cong as an intermediate variable is used for usecs_since_cong calculation in cubic_ack_received(). The usecs_since_cong is converted by using usec there. So I don't think we need to convert cubic_data->t_last_cong by TICKS_2_USEC(ticks).

You might want to wait also for Richards' approval, since he is much more familiar with the code than I am.

Sounds good to me. :)

Not changing the generic rtt base stack unit / measuring, just improviing the granularity/precision of the calculations within Cubic. since this improves cubic performance, let's put this in prior 14 branching...