systemdspawner icon indicating copy to clipboard operation
systemdspawner copied to clipboard

Allow setting nice (process scheduling priority)

Open mathause opened this issue 2 years ago • 1 comments

Proposed change

systemd-run allows to set the niceness level with systemd-run --nice=19 .... Would be nice if we could spawn kernels with reduced niceness to reduce their priority.

Alternative options

  • it might be possible to start a slice with a given niceness and start the kernels in this slice
  • or jupyterhub itself could be run with reduced niceness and the kernels would inherit this (although this is not desirable)
  • I think it's not possible to set the niceness via --property=Nice=19 - Let me know if I am wrong.

Who would use this feature?

Sysadmins who'd like to reduce the priority of the kernels run on the system.

(Optional): Suggest a solution

  • add a Nice traitlet to SystemdSpawner, defaulting to None
  • expand the systemd-run command in start_transient_service
    if nice is not None:
        run_cmd += ['--nice={}'.format(nice)]

I am happy to open a PR if there's a chance to get this in.

mathause avatar Oct 19 '21 13:10 mathause

It might actually work via property. However, I could not really test it as the systemd version of my servers is still too old (currently: systemd 234; required systemd 244 (or 246) and higher). For a quick test:

systemd-run --user --pty --quiet --nice=19 nice
systemd-run --user --pty --quiet --property=Nice=19 nice

both lines should return 19. Neither version works in systemd 234 but work on systemd 246. Thus the issue can be closed.

mathause avatar Oct 20 '21 08:10 mathause