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

#include <userver/components/manager_controller_component.hpp>

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 1000
coro_pool.max_size max amount of coroutines to keep preallocated 4000
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) 2
event_thread_pool.thread_name set OS thread name to this value 'event-worker'
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
disable_phdr_cache whether to disable caching of phdr_info objects. Usable if rebuilding with cmake variable USERVER_DISABLE_PHDR_CACHE is off limits, and has the same effect false
preheat_stacktrace_collector whether to collect a dummy stacktrace at server start up (usable to avoid loading debug info at random point at runtime) 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 Part of the task_processor name before the first '-' symbol with '-worker' appended; for example 'fs-worker' or 'main-worker'
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 1000
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 66 of file 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"
 The default name of components::ManagerControllerComponent.
 

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