On Wed, May 06, 2020 at 05:18:34PM +0200, Lennart Poettering wrote: > On Mo, 04.05.20 08:31, Tomasz Torcz (tomek@xxxxxxxxxxxxxx) wrote: > > > On Mon, May 04, 2020 at 11:52:37AM +0530, nitish nagesh wrote: > > > Hello, > > > > > > We have this odd want to move a daemon between different systemd slices. > > > Not sure if that's even a valid thing to do, but here is the requirement. > > > > You can use low-level cgroup access to move it. Something like: > > systemctl show --property MainPID --value your.service > > > /sys/fs/cgroup/NEW.slice/cgroup.procs > > You void your warranty if you do that. Moreover, on cgroupvs2 this > doesn't work really, since inner cgroups cannot have processes and > slices are by definition inner cgroups. Doesn't work? I beg to differ, the following is on Fedora 31: Control group /: -.slice ├─kodi.slice │ └─2872766 /usr/lib64/kodi/kodi-wayland ← here it has process ├─user.slice │ ├─user-1001.slice │ ├─user-0.slice │ └─user-1000.slice │ ├─user@1000.service │ │ └─init.scope │ │ ├─2914978 /usr/lib/systemd/systemd --user │ │ └─2914990 (sd-pam) │ ├─session-356.scope │ │ └─2915060 /usr/libexec/openssh/sftp-server │ └─session-354.scope │ └─2915015 /usr/libexec/openssh/sftp-server ├─init.scope │ └─1 /usr/lib/systemd/systemd --system --deserialize 214 ├─system.slice │ ├─rngd.service │ ├─abrt-oops.service […] │ └─smokeping.service │ ├─5423 /usr/bin/perl /usr/sbin/smokeping --nodaemon │ ├─7804 /usr/sbin/smokeping [FPing] │ └─7805 /usr/sbin/smokeping [FPing6] └─machine.slice ├─machine-qemu\x2d67\x2dkaitain.scope │ ├─2905751 /usr/bin/qemu-system-x86_64 -machine accel=kvm -name guest=kaitai… │ ├─vcpu0 │ └─emulator ├─machine-qemu\x2d9\x2dnaib.scope […] (heavily trimmed, but shows the idea) > There is supposed to be only one manager of the top-level cgroup > tree. On systemd systems. If you muck with the cgroup tree anyway you > are interfering with systemd#s management and things will fall apart > sooner or later. > if you want to muck around in the cgroup tree, acquire a delegated > cgroup subtree, where you can do whatever you want. Is there an API in systemd to move specific program to a dedicated slice? I know recent gnome-shell starts every application in dedicate scope, but it's under *user* instance. Which means: – no ability to increase priority of program in such scope - still fights over resources with other user scopes, and other users in general. In my usecase, I've created a top-level .slice for Kodi player. I want it to have priority over everything on my machine - over other users' processes, over virtual machines, over everything in system.slice. I achieve it by having this top-level slice with CPUShares, CPUWeight, BlockIOWeight, IOWeight much higher and IODeviceLatencyTargetSec much lower than rest of the slices. Seems to work. -- Tomasz Torcz 72->| 80->| tomek@xxxxxxxxxxxxxx 72->| 80->| _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel