From 22f419b54ba38f9c6dd917e842729e3e187e7b57 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 25 Jul 2024 13:58:04 +0200 Subject: main/lxc: more fixes for lxc-top - add kernel mem stat - fix typo in IO error message - fix -b to ignore TTY rows --- main/lxc/APKBUILD | 4 +- main/lxc/lxc-top-cgroupv2.patch | 86 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 78 insertions(+), 12 deletions(-) diff --git a/main/lxc/APKBUILD b/main/lxc/APKBUILD index 8a6406d1073..a8e9fb28fdd 100644 --- a/main/lxc/APKBUILD +++ b/main/lxc/APKBUILD @@ -4,7 +4,7 @@ pkgname=lxc pkgver=6.0.1 _pkgver=${pkgver/_rc/.rc} -pkgrel=6 +pkgrel=7 pkgdesc="Userspace interface for the Linux kernel containment features" url="https://linuxcontainers.org/lxc/" arch="all" @@ -177,7 +177,7 @@ _user_nic() { sha512sums=" 7e8b9740178ae46a2ad3ba3f1e509f69f978d0a2a1f7e1938213ae9cb9a80f496d01be64958cad4aa6f01a73f1d8c3759c3e9df9df4f67c77e603ea0809d79c2 lxc-6.0.1.tar.gz -3619a16604683d5cfa4b9d997cb8435232c016b71d0d7be2a0553d8136fa1914f916ef89d7092d3f51ff2e56714c918fef4e4e42bab89054fc92aec617228bec lxc-top-cgroupv2.patch +d24a1226f37f575de5d85a850d74fa5a59623e1ec9fc8be30bacf1c874426213be3b6c4aa70a35d7df93fb2a95a573290768b92d0256c09d91fc629c8dc930e8 lxc-top-cgroupv2.patch 43299891779b0c8737b811e16d356e211d797d003af85d97ab969b3d47212e6c33ff5fbd36579534be9e84a2caa3cca8fd39f11a37cc54ec3e2344423e348499 lxc-info-cgroups-v2.patch db71783366277a68a5c8116604cf845da4780fe4aebdb5820ae2c4fe028cfe52a9c94246db362476f2f195be6a9c2b835edbe521423f116fc66eb50023d6daab lxc.initd 91de43db5369a9e10102933514d674e9c875218a1ff2910dd882e5b9c308f9e430deacb13d1d7e0b2ed1ef682d0bb035aa6f8a6738f54fa2ca3a05acce04e467 lxc.confd diff --git a/main/lxc/lxc-top-cgroupv2.patch b/main/lxc/lxc-top-cgroupv2.patch index 5e6098aa9c1..c48ddcac508 100644 --- a/main/lxc/lxc-top-cgroupv2.patch +++ b/main/lxc/lxc-top-cgroupv2.patch @@ -1,7 +1,7 @@ From 40857b9de3714b3314f5c22e924d5993c458acbe Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Jul 2024 15:23:11 +0200 -Subject: [PATCH 1/5] tools: lxc-top: refactor lxc-top stat structs +Subject: [PATCH 1/7] tools: lxc-top: refactor lxc-top stat structs Create separate structs for each controller class. This will make it easier to add cgroupv2 support. @@ -247,7 +247,7 @@ index aa6e7209e..bcc695b3e 100644 From ec11c2dad1ccf5fd6dd9a57e2812c4551f8a710f Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Jul 2024 15:47:55 +0200 -Subject: [PATCH 2/5] tools: lxc-top: get memory stats from cgroups2 +Subject: [PATCH 2/7] tools: lxc-top: get memory stats from cgroups2 Signed-off-by: Natanael Copa --- @@ -316,7 +316,7 @@ index bcc695b3e..29d81563f 100644 From df219e84ca11294ba29ff9e85d09f4190942b30c Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Jul 2024 16:32:30 +0200 -Subject: [PATCH 3/5] lxc-top: CPU stats for cgroups2 +Subject: [PATCH 3/7] lxc-top: CPU stats for cgroups2 Recalculate the usec to nanoseconds and USER_HZ @@ -382,7 +382,7 @@ index 29d81563f..3a6c49e82 100644 From 094f05141db5968f8e3a855e4230579b12721a65 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Jul 2024 16:54:00 +0200 -Subject: [PATCH 4/5] tools: lxc-top: get the user HZ at runtime +Subject: [PATCH 4/7] tools: lxc-top: get the user HZ at runtime The USER_HZ depends on the kernel configuration. Get it run-time instead of assume it is 100 HZ. @@ -450,10 +450,10 @@ index 3a6c49e82..deea1b41d 100644 2.45.2 -From cf8f1e067f9be356f9879566ddfa31333929af22 Mon Sep 17 00:00:00 2001 +From ebf0bbb3585330bf80bdd01aa7597672cca07aba Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Jul 2024 17:29:10 +0200 -Subject: [PATCH 5/5] tools: lxc-top: add cgroups2 IO stats +Subject: [PATCH 5/7] tools: lxc-top: add cgroups2 IO stats Signed-off-by: Natanael Copa --- @@ -461,7 +461,7 @@ Signed-off-by: Natanael Copa 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/src/lxc/tools/lxc_top.c b/src/lxc/tools/lxc_top.c -index deea1b41d..6cc54988d 100644 +index deea1b41d..15cf75a9a 100644 --- a/src/lxc/tools/lxc_top.c +++ b/src/lxc/tools/lxc_top.c @@ -281,21 +281,21 @@ examples: @@ -506,7 +506,7 @@ index deea1b41d..6cc54988d 100644 + int i, j, len; + char **lines, **cols; + int ret = -1; -+ + + len = c->get_cgroup_item(c, item, buf, sizeof(buf)); + if (len <= 0 || (size_t)len >= sizeof(buf)) { + return ret; @@ -522,7 +522,7 @@ index deea1b41d..6cc54988d 100644 + cols = lxc_string_split_and_trim(lines[i], ' '); + if (!cols) + goto out; - ++ + for (j = 0; cols[j]; j++) { + if (strncmp(cols[j], "rbytes=", 7) == 0) { + stats->read += strtoull(&cols[j][7], NULL, 0); @@ -550,7 +550,7 @@ index deea1b41d..6cc54988d 100644 - stat_get_blk_stats(c, "blkio.throttle.io_serviced", &ct->stats->io_serviced); + if (cg1_get_blk_stats(c, "blkio.throttle.io_service_bytes", &ct->stats->io_service_bytes) < 0) { + if (cg2_get_blk_stats(c, "io.stat", &ct->stats->io_service_bytes) < 0) { -+ fprintf(stderr, "Unable to read CPU stats\n"); ++ fprintf(stderr, "Unable to read IO stats\n"); + } + } else { + /* only with cgroups v1 */ @@ -562,3 +562,69 @@ index deea1b41d..6cc54988d 100644 -- 2.45.2 + +From 54e8ff395303f0d121cdb603a0ea5c01dd134dc3 Mon Sep 17 00:00:00 2001 +From: Devon Schwartz +Date: Wed, 24 Jul 2024 22:17:32 -0500 +Subject: [PATCH 6/7] lxc-top: added kernel memory usage for cgroup2 + +--- + src/lxc/tools/lxc_top.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +diff --git a/src/lxc/tools/lxc_top.c b/src/lxc/tools/lxc_top.c +index 15cf75a9a..6cb38bb90 100644 +--- a/src/lxc/tools/lxc_top.c ++++ b/src/lxc/tools/lxc_top.c +@@ -373,14 +373,13 @@ static int cg1_mem_stats(struct lxc_container *c, struct mem_stats *mem) + + static int cg2_mem_stats(struct lxc_container *c, struct mem_stats *mem) + { +- mem->used = stat_get_int(c, "memory.current"); +- mem->limit = stat_get_int(c, "memory.max"); +- mem->swap_used = stat_get_int(c, "memory.swap.current"); +- mem->swap_limit = stat_get_int(c, "memory.swap.max"); +- /* TODO: find the kernel usage */ +- mem->kmem_used = 0; ++ mem->used = stat_get_int(c, "memory.current"); ++ mem->limit = stat_get_int(c, "memory.max"); ++ mem->swap_used = stat_get_int(c, "memory.swap.current"); ++ mem->swap_limit = stat_get_int(c, "memory.swap.max"); ++ mem->kmem_used = stat_match_get_int(c, "memory.stat", "kernel", 1); + /* does not exist in cgroup v2 */ +- mem->kmem_limit = 0; ++ // mem->kmem_limit = 0; + return mem->used > 0 ? 0 : -1; + } + +-- +2.45.2 + + +From 9a7c15337202a00ae7d0a87906b3529f3ab9b84b Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Thu, 25 Jul 2024 13:52:27 +0200 +Subject: [PATCH 7/7] tools: lxc-top: fix print in batch mode + +We should not care about the number of rows when printing stats in batch +mode. +--- + src/lxc/tools/lxc_top.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lxc/tools/lxc_top.c b/src/lxc/tools/lxc_top.c +index 6cb38bb90..7498331ee 100644 +--- a/src/lxc/tools/lxc_top.c ++++ b/src/lxc/tools/lxc_top.c +@@ -732,7 +732,7 @@ int lxc_top_main(int argc, char *argv[]) + stats_print_header(&total); + } + +- for (i = 0; i < active_cnt && i < ct_print_cnt; i++) { ++ for (i = 0; i < active_cnt && (i < ct_print_cnt || batch); i++) { + stats_print(container_stats[i].c->name, container_stats[i].stats, &total); + printf("\n"); + } +-- +2.45.2 + -- cgit v1.2.3