1
1
/*
2
2
* Copyright (c) 2020, 2024, Red Hat Inc.
3
+ * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
3
4
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
5
*
5
6
* This code is free software; you can redistribute it and/or modify it
@@ -61,6 +62,34 @@ class CgroupV2CpuController: public CgroupCpuController {
61
62
int cpu_quota () override ;
62
63
int cpu_period () override ;
63
64
int cpu_shares () override ;
65
+ jlong cpu_usage_in_micros ();
66
+ bool is_read_only () override {
67
+ return reader ()->is_read_only ();
68
+ }
69
+ const char * subsystem_path () override {
70
+ return reader ()->subsystem_path ();
71
+ }
72
+ bool needs_hierarchy_adjustment () override {
73
+ return reader ()->needs_hierarchy_adjustment ();
74
+ }
75
+ void set_subsystem_path (const char * cgroup_path) override {
76
+ reader ()->set_subsystem_path (cgroup_path);
77
+ }
78
+ const char * mount_point () override { return reader ()->mount_point (); }
79
+ const char * cgroup_path () override { return reader ()->cgroup_path (); }
80
+ };
81
+
82
+ class CgroupV2CpuacctController : public CgroupCpuacctController {
83
+ private:
84
+ CgroupV2CpuController* _reader;
85
+ CgroupV2CpuController* reader () { return _reader; }
86
+ public:
87
+ CgroupV2CpuacctController (CgroupV2CpuController* reader) : _reader(reader) {
88
+ }
89
+ // In cgroup v2, cpu usage is a part of the cpu controller.
90
+ jlong cpu_usage_in_micros () override {
91
+ return reader ()->cpu_usage_in_micros ();
92
+ }
64
93
bool is_read_only () override {
65
94
return reader ()->is_read_only ();
66
95
}
@@ -89,6 +118,7 @@ class CgroupV2MemoryController final: public CgroupMemoryController {
89
118
jlong memory_and_swap_limit_in_bytes (julong host_mem, julong host_swp) override ;
90
119
jlong memory_and_swap_usage_in_bytes (julong host_mem, julong host_swp) override ;
91
120
jlong memory_soft_limit_in_bytes (julong upper_bound) override ;
121
+ jlong memory_throttle_limit_in_bytes () override ;
92
122
jlong memory_usage_in_bytes () override ;
93
123
jlong memory_max_usage_in_bytes () override ;
94
124
jlong rss_usage_in_bytes () override ;
@@ -118,11 +148,14 @@ class CgroupV2Subsystem: public CgroupSubsystem {
118
148
CachingCgroupController<CgroupMemoryController>* _memory = nullptr ;
119
149
CachingCgroupController<CgroupCpuController>* _cpu = nullptr ;
120
150
151
+ CgroupCpuacctController* _cpuacct = nullptr ;
152
+
121
153
CgroupV2Controller* unified () { return &_unified; }
122
154
123
155
public:
124
156
CgroupV2Subsystem (CgroupV2MemoryController * memory,
125
157
CgroupV2CpuController* cpu,
158
+ CgroupV2CpuacctController* cpuacct,
126
159
CgroupV2Controller unified);
127
160
128
161
char * cpu_cpuset_cpus () override ;
@@ -137,6 +170,7 @@ class CgroupV2Subsystem: public CgroupSubsystem {
137
170
}
138
171
CachingCgroupController<CgroupMemoryController>* memory_controller () override { return _memory; }
139
172
CachingCgroupController<CgroupCpuController>* cpu_controller () override { return _cpu; }
173
+ CgroupCpuacctController* cpuacct_controller () override { return _cpuacct; };
140
174
};
141
175
142
176
#endif // CGROUP_V2_SUBSYSTEM_LINUX_HPP
0 commit comments