MySQL 9.3.0
Source Code Documentation
my_system_api_cgroup.cc File Reference

Functions to retrieve total physical memory and total number of logical CPUs available to the server by reading the limits set by cgroups. More...

#include <cstdint>
#include <fstream>
#include <optional>
#include <string_view>
#include "my_system_api.h"

Namespaces

namespace  anonymous_namespace{my_system_api_cgroup.cc}
 

Functions

template<typename... Args>
bool anonymous_namespace{my_system_api_cgroup.cc}::read_line_from_file (const std::string_view &path, Args &...args)
 Utility: Read the first line from the file specified in path and copy its contents into the arguments passed. More...
 
std::optional< uint32_t > anonymous_namespace{my_system_api_cgroup.cc}::cgroup_v1_cpu ()
 Read CPU limits as if it were set by cgroup v1. More...
 
std::optional< uint64_t > anonymous_namespace{my_system_api_cgroup.cc}::cgroup_v1_memory ()
 Read memory limits as if it were set by cgroup v1. More...
 
std::optional< uint32_t > anonymous_namespace{my_system_api_cgroup.cc}::cgroup_v2_cpu ()
 Read CPU limits as if it were set by cgroup v2. More...
 
std::optional< uint64_t > anonymous_namespace{my_system_api_cgroup.cc}::cgroup_v2_memory ()
 Read Memory limits as if it were set by cgroup v2. More...
 
uint64_t my_cgroup_mem_limit ()
 Read the memory limit set by the container. More...
 
uint32_t my_cgroup_vcpu_limit ()
 Read the CPU limit set by the container. More...
 

Variables

constexpr std::string_view anonymous_namespace{my_system_api_cgroup.cc}::quota_path {"/sys/fs/cgroup/cpu/cpu.cfs_quota_us"}
 cgroup v1 path to file containing CPU quota More...
 
constexpr std::string_view anonymous_namespace{my_system_api_cgroup.cc}::period_path {"/sys/fs/cgroup/cpu/cpu.cfs_period_us"}
 cgroup v1 path to file containing CPU period More...
 
constexpr std::string_view anonymous_namespace{my_system_api_cgroup.cc}::mem_path_v1
 cgroup v1 path to file containing Memory limits More...
 
constexpr std::string_view anonymous_namespace{my_system_api_cgroup.cc}::cpu_path_v2 {"/sys/fs/cgroup/cpu.max"}
 cgroup v2 path to file containing CPU limts More...
 
constexpr std::string_view anonymous_namespace{my_system_api_cgroup.cc}::mem_path_v2 {"/sys/fs/cgroup/memory.max"}
 cgroup v2 path to file containing Memory limits More...
 

Detailed Description

Functions to retrieve total physical memory and total number of logical CPUs available to the server by reading the limits set by cgroups.

Function Documentation

◆ my_cgroup_mem_limit()

uint64_t my_cgroup_mem_limit ( )

Read the memory limit set by the container.

Try cgroup v2, and then cgroup v1

Returns
memory limit set by cgroup v2 or cgroup v1; or 0
Note
Return value of 0 implies either no limits are set or server is not running in a container

◆ my_cgroup_vcpu_limit()

uint32_t my_cgroup_vcpu_limit ( )

Read the CPU limit set by the container.

Try cgroup v2, and then cgroup v1

Returns
CPU limit set by cgroup v2 or cgroup v1; or 0
Note
Return value of 0 implies either no limits are set or server is not running in a container