Skip to content

Rounding up CFS numbers in combination with a common multiprocessing use case will result in the process being throttled #1

Description

@kujon

Hi 👋

a very common pattern I've spotted is to spawn cpu_count number of threads with multiprocessing library. That leaves you with cpu_count + 1 threads, but the main thread commonly tends to chill until the others are done, so that's mostly fine if cfs_quota / cfs_period is a whole number. One could guarantee no throttling by spawning cpu_count - 1 threads in such a scenario as well.

You run into a problem if cfs_quota / cfs_period isn't a whole number given ceiling the number has been a chosen strategy. If your threads hammer the cpu, you're guaranteed to be throttled, unless you spawn cpu_count - 2 or fewer threads.

I wonder whether this library could help alleviate this issue, by either providing an option to choose between ceil or floor or by having an option to return float from cpu_count function.

What do you think?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions