summaryrefslogtreecommitdiff
path: root/src/oom/test-oomd-util.c
diff options
context:
space:
mode:
authorAnita Zhang <the.anitazha@gmail.com>2021-01-27 23:43:13 -0800
committerAnita Zhang <the.anitazha@gmail.com>2021-02-09 01:29:57 -0800
commit1f76411bd616290a7ed811530672209c8aa29f54 (patch)
tree1b895a1ece961c169c6fd3591ed5944d79e07eca /src/oom/test-oomd-util.c
parentdf7f3eab52178331104650db0bc5fb95564e1394 (diff)
downloadsystemd-1f76411bd616290a7ed811530672209c8aa29f54.tar.gz
oom: sort by pgscan and memory usage
If 2 candidates have the same pgscan, prioritize the one with the larger memory usage.
Diffstat (limited to 'src/oom/test-oomd-util.c')
-rw-r--r--src/oom/test-oomd-util.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/oom/test-oomd-util.c b/src/oom/test-oomd-util.c
index 3dec4f0ff0..a1fe78806a 100644
--- a/src/oom/test-oomd-util.c
+++ b/src/oom/test-oomd-util.c
@@ -292,16 +292,20 @@ static void test_oomd_sort_cgroups(void) {
OomdCGroupContext ctx[4] = {
{ .path = paths[0],
.swap_usage = 20,
- .pgscan = 60 },
+ .pgscan = 60,
+ .current_memory_usage = 10 },
{ .path = paths[1],
.swap_usage = 60,
- .pgscan = 40 },
+ .pgscan = 40,
+ .current_memory_usage = 20 },
{ .path = paths[2],
.swap_usage = 40,
- .pgscan = 20 },
+ .pgscan = 40,
+ .current_memory_usage = 40 },
{ .path = paths[3],
.swap_usage = 10,
- .pgscan = 80 },
+ .pgscan = 80,
+ .current_memory_usage = 10 },
};
assert_se(h = hashmap_new(&string_hash_ops));
@@ -318,16 +322,16 @@ static void test_oomd_sort_cgroups(void) {
assert_se(sorted_cgroups[3] == &ctx[3]);
sorted_cgroups = mfree(sorted_cgroups);
- assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan, NULL, &sorted_cgroups) == 4);
+ assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan_and_memory_usage, NULL, &sorted_cgroups) == 4);
assert_se(sorted_cgroups[0] == &ctx[3]);
assert_se(sorted_cgroups[1] == &ctx[0]);
- assert_se(sorted_cgroups[2] == &ctx[1]);
- assert_se(sorted_cgroups[3] == &ctx[2]);
+ assert_se(sorted_cgroups[2] == &ctx[2]);
+ assert_se(sorted_cgroups[3] == &ctx[1]);
sorted_cgroups = mfree(sorted_cgroups);
- assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan, "/herp.slice/derp.scope", &sorted_cgroups) == 2);
- assert_se(sorted_cgroups[0] == &ctx[1]);
- assert_se(sorted_cgroups[1] == &ctx[2]);
+ assert_se(oomd_sort_cgroup_contexts(h, compare_pgscan_and_memory_usage, "/herp.slice/derp.scope", &sorted_cgroups) == 2);
+ assert_se(sorted_cgroups[0] == &ctx[2]);
+ assert_se(sorted_cgroups[1] == &ctx[1]);
assert_se(sorted_cgroups[2] == 0);
assert_se(sorted_cgroups[3] == 0);
sorted_cgroups = mfree(sorted_cgroups);