apiVersion: release-notes/v2
kind: feature
area: installation
upgradeNotes:
- title: Proxy Concurrency changes
  content: |
    Previously, the proxy `concurrency` setting, which configures how many worker threads the proxy runs,
    was inconsistently configured between sidecars and different gateway installation mechanisms.
    This often led to gateways running with concurrency based on the number of physical cores on the host machine,
    despite having CPU limits, leading to decreased performance and increased resource usage.
    
    In this release, concurrency configuration has been tweaked to be consistent across deployment types.
    The new logic will use the `ProxyConfig.Concurrency` setting (which can be configured mesh wide or per-pod), if set,
    and otherwise set concurrency based on the CPU limit allocated to the container
    For example, a limit of 2500m would set concurrency to 3.
    
    Prior to this release, sidecars followed this logic, but sometimes incorrectly determined the CPU limit.
    Gateways would never automatically adapt based on concurrency settings.

    To retain the old gateway behavior of always utilizing all cores, `proxy.istio.io/config: concurrency: 0` can be set on each gateway.
    However, it is recommended to instead unset CPU limits if this is desired.

releaseNotes:
- |
  **Updated** the proxies `concurrency` configuration to always be detected based on CPU limits, unless explicitly configured. See upgrade notes for more info.