mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 18:27:04 +03:00
cgtop: show resource usage relative to cgroup root only
This way the output is restricted to cgroups from a container when run in one.
This commit is contained in:
parent
52f448c3ff
commit
03af6492f0
@ -348,21 +348,21 @@ static int refresh_one(
|
||||
return r;
|
||||
}
|
||||
|
||||
static int refresh(Hashmap *a, Hashmap *b, unsigned iteration) {
|
||||
static int refresh(const char *root, Hashmap *a, Hashmap *b, unsigned iteration) {
|
||||
int r;
|
||||
|
||||
assert(a);
|
||||
|
||||
r = refresh_one(SYSTEMD_CGROUP_CONTROLLER, "/", a, b, iteration, 0);
|
||||
r = refresh_one(SYSTEMD_CGROUP_CONTROLLER, root, a, b, iteration, 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
r = refresh_one("cpuacct", "/", a, b, iteration, 0);
|
||||
r = refresh_one("cpuacct", root, a, b, iteration, 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
r = refresh_one("memory", "/", a, b, iteration, 0);
|
||||
r = refresh_one("memory", root, a, b, iteration, 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
r = refresh_one("blkio", "/", a, b, iteration, 0);
|
||||
r = refresh_one("blkio", root, a, b, iteration, 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@ -721,6 +721,7 @@ int main(int argc, char *argv[]) {
|
||||
unsigned iteration = 0;
|
||||
usec_t last_refresh = 0;
|
||||
bool quit = false, immediate_refresh = false;
|
||||
_cleanup_free_ char *root = NULL;
|
||||
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
@ -729,6 +730,12 @@ int main(int argc, char *argv[]) {
|
||||
if (r <= 0)
|
||||
goto finish;
|
||||
|
||||
r = cg_get_root_path(&root);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to get root control group path: %m");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
a = hashmap_new(&string_hash_ops);
|
||||
b = hashmap_new(&string_hash_ops);
|
||||
if (!a || !b) {
|
||||
@ -751,7 +758,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
if (t >= last_refresh + arg_delay || immediate_refresh) {
|
||||
|
||||
r = refresh(a, b, iteration++);
|
||||
r = refresh(root, a, b, iteration++);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user