userver: components::ManagerControllerComponent Class Reference
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
components::ManagerControllerComponent Class Referencefinal

Component that prepares the engine internals and starts all the other components. More...

#include <userver/components/manager_controller_component.hpp>

+ Inheritance diagram for components::ManagerControllerComponent:
+ Collaboration diagram for components::ManagerControllerComponent:

Public Member Functions

 ManagerControllerComponent (const components::ComponentConfig &config, const components::ComponentContext &context)
 

Static Public Attributes

static constexpr std::string_view kName = "manager-controller"
 

Detailed Description

Component that prepares the engine internals and starts all the other components.

Dynamic config

Static options:

Name Description Default value
coro_pool.initial_size amount of coroutines to preallocate on startup -
coro_pool.max_size max amount of coroutines to keep preallocated -
coro_pool.stack_size size of a single coroutine 256 * 1024
event_thread_pool.threads number of threads to process low level IO system calls (number of ev loops to start in libev) -
components dictionary of "component name": "options" -
default_task_processor name of the default task processor to use in components -
task_processors.*NAME*.*OPTIONS* dictionary of task processors to create and their options. See description below -
mlock_debug_info whether to mlock(2) process debug info to prevent major page faults on unwinding true

Static task_processor options:

Name Description Default value
guess-cpu-limit guess optimal threads count false
thread_name set OS thread name to this value -
worker_threads threads count for the task processor -
os-scheduling OS scheduling mode for the task processor threads. 'idle' sets the lowest priority. 'low-priority' sets the priority below 'normal' but higher than 'idle'. normal
spinning-iterations tunes the number of spin-wait iterations in case of an empty task queue before threads go to sleep 10000
task-trace optional dictionary of tracing options empty (disabled)
task-trace.every set N to trace each Nth task 1000
task-trace.max-context-switch-count set upper limit of context switches to trace for a single task 1000
task-trace.logger required name of logger to write traces to, should not be the 'default' logger -

Tips and tricks on task-trace usage are described in Profiling context switches.

Static configuration example:

components_manager:
  coro_pool:
    initial_size: 5000
    max_size: 50000
  default_task_processor: main-task-processor
  event_thread_pool:
    threads: 2
  task_processors:
    bg-task-processor:
      thread_name: bg-worker
      worker_threads: 2
      os-scheduling: idle
      task-trace:
        every: 1000
        max-context-switch-count: 1000
        logger: tracer
    fs-task-processor:
      thread_name: fs-worker
      worker_threads: 2
    main-task-processor:
      thread_name: main-worker
      worker_threads: 16
    monitor-task-processor:
      thread_name: monitor
      worker_threads: 2
  components:
    manager-controller:  # Nothing

Definition at line 63 of file manager_controller_component.hpp.

Member Data Documentation

◆ kName

constexpr std::string_view components::ManagerControllerComponent::kName = "manager-controller"
staticconstexpr

Definition at line 70 of file manager_controller_component.hpp.


The documentation for this class was generated from the following file: