Page MenuHomeFreeBSD

Limit taskqueue/gtaskqueue executions in epoch
AcceptedPublic

Authored by glebius on Apr 24 2020, 2:04 AM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 20 2023, 8:34 AM
Unknown Object (File)
Aug 25 2023, 7:23 AM
Unknown Object (File)
Jun 21 2023, 8:52 AM
Subscribers
None

Details

Summary

o Make epoch batch limit a global int, and move it to kern.epoch namespace.
o Change epoch batch size to 64. Benchmarks doesn't show any improvement above this number.
o Limit taskqueue/gtaskqueue executions in epoch to epoch_batch_max.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 30694
Build 28426: arc lint + arc unit

Event Timeline

Can we use a time-based expiry, like ticks?

Can we use a time-based expiry, like ticks?

I like the idea, but needs to be tested first. I'd suggest to go with this patch first, since it is a bugfix for taskqueues, and default value adjustment is something that you wanted me to do long time.

The most simple fix is to not coalesce epoch calls. Can we agree on that?

Keep it simple stupid, KISS. One EPOCH enter / exit for every GROUPTASKQUEUE call.

There are other ways to optimise epoch calls on a system-per-CPU based method.

The patch looks right to me. I still think this batching is dangerous as it increases free-to-reuse latency substantially for a fairly small perf gain. I would like to explore ways to make epoch sections cheaper without compromising system liveness.

This revision is now accepted and ready to land.Apr 28 2020, 2:08 PM