userver: userver/hostinfo/cpu_limit.hpp Source File
Loading...
Searching...
No Matches
cpu_limit.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/hostinfo/cpu_limit.hpp
4/// @brief Information about CPU limits in container.
5/// @ingroup userver_universal
6
7#include <optional>
8
9USERVER_NAMESPACE_BEGIN
10
11/// @brief Information about current host.
12namespace hostinfo {
13
14/// @brief Returns the CPU limit.
15///
16/// Unlike `nproc` and
17/// `std::thread::hardware_concurrency` this method considers container limits
18/// and may return fractional values.
19///
20/// Uses:
21/// * CPU_LIMIT environment variable (example: `CPU_LIMIT=1.95c`).
22/// * DEPLOY_VCPU_LIMIT environment variable (example: `DEPLOY_VCPU_LIMIT=2000`).
23/// * cpu limit from cgroup v2 (CFS scheduler)
24std::optional<double> CpuLimit();
25
26/// @brief Returns true if the current process is run in container (CPU_LIMIT
27/// environment variable is set).
28bool IsInRtc();
29
30} // namespace hostinfo
31
32USERVER_NAMESPACE_END