0

There was (and maybe still based on open github issues) an issue with CFS where CPU throttling would occur in some unexpected ways. I realize this original reference is a little different than it currently works after a couple rounds of fixing that has been done in the kernel. https://engineering.indeedblog.com/blog/2019/12/unthrottled-fixing-cpu-limits-in-the-cloud/ https://engineering.indeedblog.com/blog/2019/12/cpu-throttling-regression-fix/

My understanding is that the CFS allocates a certain proportion of a given time slice to processes when using CFS qoutas.

  1. If I have a small enough.NET Core continuation (as in the boundaries in an async task between awaits) does that continuation end up running within a single "time slice"?
  2. If it is a small (.NET Core) continuation that is very short such that the entire time slice isn't needed, does it end up returning the slack quota back to the global bucket?
  3. Can multiple parallel continuations interleave in the time slice?
  4. When using a container is it treated as a singular process from the perspective of the CFS on the host or is there first class visibility into the threading inside the container?

The core intuition I am trying to establish is if it is accurate to consider that small async tasks may end up causing more overhead in returns to the global bucket inside the CFS; or if there is little relationship at that level between CFS throttling behaviors and .NET Core async usage. I am considering this from the perspective of an environment using Kubernetes.

From this I'm wondering if CFS optimal tuning is directly correlated with async/await usage, or if after miscellaneous nuance, abstraction through containers and the.NET CLR it's not really related.

Joshua Enfield
  • 17,642
  • 10
  • 51
  • 98

0 Answers0