1

I always thought that on Linux all non-root users get the same treatment and always run in parallel, the kernel does not care whose X session is currently active. But now there seems to be some kind of new "feature" in the Linux kernel, Ubuntu or KDE that suspends programs, if they are not in the active X session.

Examples

Login

  1. I am logged in as Alice and decide to switch to user Bob and start a new KDE session using this menu

enter image description here

  1. Bob's splash screen appears and I immediately switch back to Alice using Ctrl+Alt+F7.
  2. I do some work and after a few minutes I switch back to Bob's new session with Ctrl+Alt+F8.
  3. I find that the splash screen did not continue and the session did not load. Only now it continues to load and finishes in ~10 s.

Logout

Almost the same as above: I initiate a log out and immediately switch to another account and when I come back after a few minutes the logout did not finish.

Music

I start playing music with mpv as Alice. I switch to Bob's account. Music plays fine at first, but then after ~40s it stops. I switch back for a second to Alice, the music continues playing and when I switch to Bob I have again ~40s. Youtube seems to stop earlier, after ~15s.

Questions

This all leads me to believe that there is something going on that suspends processes that are not in the active X session.

  1. Who is responsible for this?
  2. How can I turn this off?
  3. Can I white list programs that should never be suspended?

I am using KDE Neon 5 based on Ubuntu 16.04 LTS (Xenial Xerus) with KDE 5.36.0.

3

Who is responsible for this?

Not Linux. Not Ubuntu. Not X.Org. The programs are not suspended.

The programs themselves are the culprit. Since times immemorial, programs have been able to know whether they were currently displaying something, because they know when the windowing system asks them to redraw their window. If the X session is not active then no redrawing is necessary.

Over time, programs (or GUI libraries such as the KDE libraries) have become more and more clever about detecting when their output is not needed, to save CPU cycles (which, on battery-powered devices, means battery life).

Sometimes the program cannot continue, because it's using the graphics card as a processor to do some complex rendering. If the graphics card is busy displaying another session then the program can't use it. You'll notice this because such programs also can't function if another program's window is active.

How can I turn this off?
Can I white list programs that should never be suspended?

Unfortunately, I don't know.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.