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
F112752824: D40185.id122486.diff
Sat, Mar 22, 8:19 AM
Unknown Object (File)
Wed, Feb 26, 5:09 AM
Unknown Object (File)
Wed, Feb 26, 5:01 AM
Unknown Object (File)
Tue, Feb 25, 11:20 PM
Unknown Object (File)
Mon, Feb 24, 10:19 PM
Unknown Object (File)
Sun, Feb 23, 8:45 PM
Unknown Object (File)
Jan 16 2025, 11:40 PM
Unknown Object (File)
Jan 14 2025, 2:42 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 51714
Build 48605: 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–233

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...