From bf5e585c5e1b12fe80ee486fdd48eeb71a13fa21 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 27 Mar 2018 11:39:58 +0200 Subject: executor: rework cgroups support Turns out creating a cgroup per test is too expensive. Moreover, it leads to hanged tasks as cgroup destruction is asynchronous and overloads kernel work queues. Create only a single cgroup per proc, but restrict descriptions to mess with that single group, instead test processes create own nested cgroups for messing. --- sys/linux/cgroup.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'sys/linux/cgroup.txt') diff --git a/sys/linux/cgroup.txt b/sys/linux/cgroup.txt index 1037bb823..951be2123 100644 --- a/sys/linux/cgroup.txt +++ b/sys/linux/cgroup.txt @@ -9,9 +9,10 @@ resource fd_cgroup_subtree[fd] resource fd_cgroup_int[fd] resource fd_cgroup_pid[fd] +mkdirat$cgroup_root(fd const[AT_FDCWD], path ptr[in, string[cgroup_dirs]], mode const[0x1ff]) +mkdirat$cgroup(fd fd_cgroup, path ptr[in, string[cgroup_names]], mode const[0x1ff]) openat$cgroup_root(fd const[AT_FDCWD], file ptr[in, string[cgroup_dirs]], flags const[CGROUP_OPEN_FLAGS], mode const[0]) fd_cgroup openat$cgroup(fd fd_cgroup, file ptr[in, string[cgroup_names]], flags const[CGROUP_OPEN_FLAGS], mode const[0]) fd_cgroup -mkdirat$cgroup(fd fd_cgroup, path ptr[in, string[cgroup_names]], mode flags[open_mode]) openat$cgroup_ro(fd fd_cgroup, file ptr[in, string[cgroup_ctrl_read]], flags const[O_RDONLY], mode const[0]) fd openat$cgroup_int(fd fd_cgroup, file ptr[in, string[cgroup_ctrl_int]], flags const[O_RDWR], mode const[0]) fd_cgroup_int openat$cgroup_procs(fd fd_cgroup, file ptr[in, string[cgroup_proc_files]], flags const[O_RDWR], mode const[0]) fd_cgroup_pid @@ -41,9 +42,9 @@ cgroup_control { sp const[32, int8] } [packed] -cgroup_dirs = "./cgroup", "./cgroup.cpu", "./cgroup.net" +cgroup_dirs = "./cgroup/syz0", "./cgroup/syz1", "./cgroup.cpu/syz0", "./cgroup.cpu/syz1", "./cgroup.net/syz0", "./cgroup.net/syz1" cgroup_names = "syz0", "syz1" -cgroup_paths = "./cgroup", "./cgroup.cpu", "./cgroup.net", "./cgroup/syz0", "./cgroup.cpu/syz0", "./cgroup.net/syz0", "./cgroup/syz1", "./cgroup.cpu/syz1", "./cgroup.net/syz1" +cgroup_paths = "./cgroup/syz0", "./cgroup.cpu/syz0", "./cgroup.net/syz0", "./cgroup/syz1", "./cgroup.cpu/syz1", "./cgroup.net/syz1" # '+', '-' cgroup_control_signs = 43, 45 # '+', '-', ',', '/', ';' and digits -- cgit mrf-deployment