@@ -42,7 +42,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
4242// <config_overview_bootstrap>` for more detail.
4343
4444// Bootstrap :ref:`configuration overview <config_overview_bootstrap>`.
45- // [#next-free-field: 43 ]
45+ // [#next-free-field: 44 ]
4646message Bootstrap {
4747 option (udpa.annotations.versioning ).previous_message_type =
4848 "envoy.config.bootstrap.v2.Bootstrap" ;
@@ -433,6 +433,17 @@ message Bootstrap {
433433 // Optional configuration for memory allocation manager.
434434 // Memory releasing is only supported for `tcmalloc allocator <https://github.com/google/tcmalloc>`_.
435435 MemoryAllocatorManager memory_allocator_manager = 41 ;
436+
437+ // When enabled, Envoy pins each worker thread to a distinct CPU from the process affinity mask,
438+ // worker ``i`` to the ``i-th`` CPU in ascending order. This improves CPU cache and ``NUMA``
439+ // locality for high concurrency deployments on bare metal. It is available on Linux only and is
440+ // ignored on other platforms. Pinning requires a worker count no greater than the number of CPUs
441+ // in the process affinity mask. When the worker count exceeds the available CPUs no worker is
442+ // pinned. Pinning is applied once when the workers start, so a later change to the process
443+ // affinity mask does not re-pin.
444+ //
445+ // Defaults to ``false``.
446+ bool enable_worker_cpu_affinity = 43 ;
436447}
437448
438449// Administration interface :ref:`operations documentation
@@ -469,6 +480,8 @@ message Admin {
469480 bool ignore_global_conn_limit = 6 ;
470481
471482 // List of admin paths that are accessible. If not specified, all admin endpoints are accessible.
483+ // Matchers are evaluated against the request path. For endpoints commonly queried with
484+ // parameters (for example ``/stats?format=...``), prefer ``prefix`` matchers.
472485 //
473486 // When specified, only paths in this list will be accessible, all others will return ``HTTP 403 Forbidden``.
474487 //
@@ -477,7 +490,8 @@ message Admin {
477490 // .. code-block:: yaml
478491 //
479492 // allow_paths:
480- // - exact: /stats
493+ // - prefix: /stats
494+ // - prefix: /config_dump
481495 // - exact: /ready
482496 // - prefix: /healthcheck
483497 //
@@ -774,6 +788,7 @@ message CustomInlineHeader {
774788 InlineHeaderType inline_header_type = 2 [(validate.rules ).enum = {defined_only : true}];
775789}
776790
791+ // [#next-free-field: 6]
777792message MemoryAllocatorManager {
778793 // Configures tcmalloc to perform background release of free memory in amount of bytes per ``memory_release_interval`` interval.
779794 // If equals to ``0``, no memory release will occur. Defaults to ``0``.
@@ -783,4 +798,57 @@ message MemoryAllocatorManager {
783798 // interval Envoy will try to release ``bytes_to_release`` of free memory back to operating system for reuse.
784799 // Defaults to ``1000`` milliseconds.
785800 google.protobuf.Duration memory_release_interval = 2 ;
801+
802+ // Sets the soft memory limit for tcmalloc. When the total memory used by tcmalloc exceeds this
803+ // limit, background release will be performed more aggressively to bring memory usage below the
804+ // limit. If not set, no soft memory limit is applied.
805+ //
806+ // .. note::
807+ // This is currently only supported with tcmalloc and not with ``gperftools``.
808+ //
809+ google.protobuf.UInt64Value soft_memory_limit_bytes = 3 ;
810+
811+ // Sets the maximum per-CPU cache size in bytes for tcmalloc. Smaller values reduce per-CPU
812+ // memory overhead at the cost of increased contention on the central free list. If not set,
813+ // tcmalloc's default is used.
814+ //
815+ // .. note::
816+ // This is currently only supported with tcmalloc and not with ``gperftools``.
817+ //
818+ google.protobuf.UInt32Value max_per_cpu_cache_size_bytes = 4 ;
819+
820+ // The threshold of unfreed memory in bytes that triggers the heap shrinker to release memory
821+ // back to the OS. When the difference between physical memory used and application-allocated
822+ // memory exceeds this threshold, free memory is released.
823+ //
824+ // Defaults to ``104857600`` (100 MB).
825+ uint64 max_unfreed_memory_bytes = 5 ;
826+ }
827+
828+ // A placeholder proto so that users can explicitly configure the standard
829+ // Listener Manager via the bootstrap's :ref:`listener_manager <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.listener_manager>`.
830+ // [#not-implemented-hide:]
831+ message ListenerManager {
832+ }
833+
834+ // A placeholder proto so that users can explicitly configure the standard
835+ // Validation Listener Manager via the bootstrap's :ref:`listener_manager <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.listener_manager>`.
836+ // [#not-implemented-hide:]
837+ message ValidationListenerManager {
838+ }
839+
840+ // A placeholder proto so that users can explicitly configure the API
841+ // Listener Manager via the bootstrap's :ref:`listener_manager <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.listener_manager>`.
842+ // [#not-implemented-hide:]
843+ message ApiListenerManager {
844+ enum ThreadingModel {
845+ // Handle HTTP requests on the main Envoy thread which also processes platform-raised events and runs xDS clients.
846+ MAIN_THREAD_ONLY = 0 ;
847+
848+ // Handle HTTP requests on a standalone worker thread.
849+ STANDALONE_WORKER_THREAD = 1 ;
850+ }
851+
852+ // Default to MainThreadOnly.
853+ ThreadingModel threading_model = 1 ;
786854}
0 commit comments