-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
Cilium Feature Proposal
Context
Cilium default configuration is optimized for compatibility:
The default out of the box deployment of Cilium is focused on maximum compatibility rather than most optimal performance
Tuning Cilium for optimal performance and a reasonable resource consumption (memory, cpu etc.) is non-trivial, and depends on factors like cluster size, the number of flows (connections) and the characteristics of that traffic etc.
The tuning guide gives some high level recommendations on how to tweak individual Cilium parameters (e.g. eBPF map sizes).
Proposal
We propose to add a new helm parameter, e.g. scale-profile, which has a few pre-determined profiles that are optimized for a particular scale and traffic pattern. These would change the default helm values for individual parameters to a default value that is congruent with the rest of the values in the profile.
An example of a possible set of profiles for the sake of discussion (exact number of profiles, target sizes and flows etc. TBD):
| Profile name | Max cluster size | Number of flows (connections) | Max. Memory footprint per node (MB) |
|---|---|---|---|
kind |
3 | 5K | X |
small |
10 | 50K | Y |
medium (default) |
100 | 500K | Z |
large |
1000 | 5M | T |
x-large |
10K | 50M | R |
Priority
Helm values for specific parameters should override scale-profile values. The order of priority should therefore be:
- Specific helm value
scale-profileprofile value- Default value (current default)
In absence of scale-profile value, the current defaults should be used. These defaults could also be the "default" profile (medium profile in the table above).
Setting scale-profile on a running cluster
There is no intention to support adding a scale-profile on a running clusters, but rolling it out via a controlled per-node config should be possible.
Relevant sigs
- @cilium/sig-scalability
- @cilium/sig-agent
Some thoughts on the possible implementation
N/A