kwin/cmake/modules
Martin Flöser 7c8003f7f6 Use real-time scheduling policy for kwin_wayland
Summary:
The base idea behind this change is to keep the system responsive no
matter what other processes do. All input and rendering needs to go
through the windowing system, so keeping it responsive is important.

Currently KWin competes with all other processes for resources and this
can render the system unusable. Consider some processes running amok. In
this case the user might not be able to easily close the applications as
KWin does not get the cpu time to perform the input tasks requested by
the user.

Or in the case of playing a demanding game it is important that KWin
gets scheduled to forward the pointer input events. The user doesn't
want that the game (or another process) wins against the windowing
sytem.

The disadvantage is that KWin always wins against other processes with
real time scheduling. This could result in KWin running amok stalling
the system. On the other hand this is no change to the current situation
as if KWin runs amok the sytem is unusable.

The change uses libcap to set CAP_SYS_NICE on kwin_wayland executable.
KWin_wayland on start sets the scheduling policy to SCHED_RR with the
lowest possible priority. Thus any other SCHED_RR process will win
against KWin. So real time processes are not affected by this change!

After adjusting the scheduling (which requires CAP_SYS_NICE) KWin drops
this capability again.

Test Plan:
Verified that KWin adjusts the scheduler, that it is not passed
to child processes, that the capability gets dropped and not passed to
child processes.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D7757
2017-09-29 20:23:57 +02:00
..
COPYING-CMAKE-SCRIPTS [kwin] Copy required FindModules to kwin 2014-03-26 14:37:36 +01:00
FindFontconfig.cmake [wayland] Add a QPA plugin for kwin_wayland 2015-08-25 14:33:50 +02:00
FindLibcap.cmake Use real-time scheduling policy for kwin_wayland 2017-09-29 20:23:57 +02:00
FindLibdrm.cmake [wayland] Add a basic drm/kms backend 2015-04-24 12:03:19 +02:00
FindLibinput.cmake Initial support for libinput 2014-10-20 14:51:24 +02:00
FindQt5EventDispatcherSupport.cmake [plugins/qpa] support use of modularized qtplatformsupport from Qt 5.8 2016-10-28 21:12:48 +09:00
FindQt5FontDatabaseSupport.cmake [plugins/qpa] support use of modularized qtplatformsupport from Qt 5.8 2016-10-28 21:12:48 +09:00
FindQt5PlatformSupport.cmake Fix build with Qt 5.6 2015-12-03 18:28:10 +01:00
FindQt5ThemeSupport.cmake [plugins/qpa] support use of modularized qtplatformsupport from Qt 5.8 2016-10-28 21:12:48 +09:00
FindUDev.cmake replace reference to licence with the bsd licence as the reference often goes missing 2015-04-23 16:10:00 +02:00
FindXKB.cmake replace reference to licence with the bsd licence as the reference often goes missing 2015-04-23 16:10:00 +02:00
FindXwayland.cmake Check for Xwayland as RUNTIME dependency 2016-02-03 15:49:05 +01:00
Findepoxy.cmake Bind building of glx support on whether epoxy has a glx header 2015-11-03 09:29:31 +01:00
Findgbm.cmake Initial implementation of EglGbmBackend 2015-04-24 12:03:19 +02:00
Findlibhybris.cmake Don't look out for libis 2016-05-30 12:45:38 +05:30