The experimental 'rt-scheduler' feature of Mutter / Gnome Shell 3.34

I was excited to see that Mutter 3.34 can experimentally give itself a realtime priority. I’ve had a lot of situations where a rogue app or userspace process has managed to lock up my desktop system completely. After one of these I resolved to enable the rt-scheduler feature and see if it helped. And what do you know - it does!

I tested a bit further using a Tracker/GStreamer bug which is causing desktop lockups in some cases. Triggering this bug could easily lock up my desktop before, but with the realtime priority set then the shell remains responsive throughout, only freezing for < 1 second at a time.

I’m curious if anyone else has tried it yet? If not, perhaps you should :slight_smile:

I’m not sure if this has been fixed or not, but currently to use the rt-scheduler you must set the CAP_SYS_NICE capability in the binary, and it has the effect that the GVFS modules in GLib will stop working (in the sense that they will return a GDummyFile instead of a GFile object. It is a security feature, and seems to be fully on-purpose). Also storing extended attributes in files won’t work. With plain Gnome Shell it isn’t a problem, but if you install extensions that make use of GVFS (like Desktop Icons) you will have problems.

I was reading your reply with doubts, and then I went to look and my desktop icons have indeed all disappeared :slight_smile: Thanks for the info!

Not only Desktop Icons; any other extension that makes use of GVFS will also fail. Another programmer commented about a music player extension that used it to access remote files with HTTP.

What I’ve noticed the rt-scheduler stuff has not fixed for me is massive I/O stalls. You can fairly trivially setup fio to run a bunch of sync I/O with 4k block size, 1gb files, and an iodepth of 4 to replicate the issue (using “seq-write” operations).

What does work, however, is ensuring that fio script runs in a user slice with MemoryLimit= to reduce how much page cache it steals.

Right! Adding resource limits in the systemd unit is something I’d like to do for Tracker, and other background processes like Packagekit (if they aren’t doing it already)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.