1. Unsorted tentative items
1.1. Shell CPU/GPU usage
Consider optimizing for 2D/flat actors (CarlosGarnacho).
There's 2 potential benefits to this for the most general case. Calculation of paint volumes could be streamlined, and pointer picking might be performed without the "redraw in special colors, glReadPixels to find out actor" step (see mutter issue 154).
Folding MetaCullable into Clutter (CarlosGarnacho)
Currently MetaCullable requires 2 full iterations down the hierarchy: one to apply the culling regions for that redraw, and another to clear it for future calculations. It seems this could be integrated into ClutterActor size/content invalidation with a reduced cost.
Handle invalidations as >1 rectangles. How much worth is it? (CarlosGarnacho)
Tentative patches (between others) at https://bugzilla.gnome.org/show_bug.cgi?id=782344
GL Features worth looking? (CarlosGarnacho)
- Disable mipmapping on low-memory or HiDPI systems
- Currently the Shell will use mipmapping towers to make scaled down textures look better; this consumes memory and takes time on the GPU to generate the mipmap towers, so low memory systems take a hit. Additionally, on HiDPI nearest neighbour minification filters should give good results without the memory usage.
- App drawer is slow in loading textures: using a textures atlas for managing the app icons?
- Sysprof support for reporting per-frame informations
It would be nice to add support for GPU usage too as intel_gpu_top or nvidia-smi or /sys/devices/pci*/*/drm/card*/gt_cur_freq_mhz
- Use compressed texture formats for assets (not for windows)
Look into improving the speed of g_typelib_get_dir_entry_by_gtype_name
1.2. Platform
The discrepancy between GdkPixbuf's RGBA unpremultiplied representation, and Cairo's ARGB premultiplied, causes image copies and conversions to happen back and forth. Blog post (FedericoMenaQuintero)
1.3. Memory usage
Some of this is a bit Fedora workstation specific, sorry about that
Description |
Work around |
Memory Available (1) |
|
gdm keeps an extra full gnome-shell session running after login |
Use auto-login |
600M -> 880M |
Patches: https://github.com/jwrdegoede/gdm/commits/stop-chooser-after-login Bug: https://bugzilla.gnome.org/show_bug.cgi?id=747339 |
gnome-software always starts even if org.gnome.software download-updates=false and the search provider is off |
rm /etc/xdg/autostart/gnome-software-service.desktop |
880M -> 1075M |
|
packagekit starts despite org.gnome.software download-updates=false and gnome-software not running, so nothing needs it this is caused by the code to show the "Reboot and install updates" power-button menu option |
systemctl mask packagekitd.service |
1075M -> 1080M |
|
abrt-applet is running even if user opted-out of abrt data collection |
dnf remove abrt-gui |
1080M -> 1086M |
|
abrt runs 4 system level daemons, including 1 for Xorg crashes even though Wayland is now the default |
dnf remove 'abrt*' |
1086M -> 1096M |
|
evolution + daemons are always started even if no account is setup |
rm /etc/xdg/autostart/org.gnome.Evolution-alarm-notify.desktop and disable calender and contacts search |
1096M -> 1123M |
Mitigation: https://bugzilla.gnome.org/show_bug.cgi?id=793031 |
gnome-shell-calendar-server always starts even if no account is setup in evolution, this also causes a whole bunch of evolution processes to needlessly start |
rm /usr/libexec/gnome-shell-calendar-server |
1123M -> 1195M |
|
libvirtd is always running, even if no vms have been created and e.g. boxes has not been started |
systemctl disable libvirtd.service |
1195M -> 1214M |
|
firewalld is always running, do we really need this on a system where no daemons (which are firewalled off) are listening? Removing this might be a bit controversial... |
dnf remove firewalld |
1214M -> 1235M |
|
journald by default creates very large logfiles and mmaps the entire file. The RSS size seems to be off here, changing the SystemMaxFileSize followed by a journalctl --rotate results in a huge win in RSS size, but only a small gain in available mem being reported. Perhaps because most mem is disk-backed? |
sed -i 's/#SystemMaxUse=/SystemMaxUse=50M/' /etc/systemd/journald.conf or set SystemMaxFileSize=10M |
1235M -> 1240M |
|
sysctl.vm.min_free_kbytes defaults to 45056 because of transparent huge pages being enabled in the kernel-config, but the policy is CONFIG_TRANSPARENT_HUGEPAGE_MADVISE so THP never gets used on a default Fedora Workstation install. The default min_free_kbtes without THP is 6144 |
create 99-local.conf file with "vm.min_free_kbytes=6144" |
1240M -> 1358M |
|
gsd-color is always running even if no color profiles are used anywhere. Note need to check if fixing this also stops colord from dbus-activating |
? removing this from autostart breaks the session |
|
colord timed out exit: https://github.com/hughsie/colord/pull/78 |
geoclue is always dbus activated by something even if it is disabled in g-initial-setup |
wait for it to auto-exit |
|
|
gsd-daemons are not started just when needed |
|
|
moving everything to systemd --user is the first step: https://bugzilla.gnome.org/show_bug.cgi?id=690866 next step is o use udev and systemd targets to only start them when needed, and teach some of them to shut themselves down under certain udev conditions |
1) Aprox. improvement in "free" command available output from a gnome-terminal started directly after boot + login, with all systemd timers disabled
Other things:
Too much stuff in /etc/xdg/autostart - https://bugzilla.redhat.com/show_bug.cgi?id=1578010
- This is something could be fixed by systemd in session and adding on-request services.
https://bugzilla.gnome.org/show_bug.cgi?id=690866 (in progress)
- This is something could be fixed by systemd in session and adding on-request services.
- mlocate installed by default on Fedora WS, running updatedb daily
- Tweak search provivider defaults?
Enabling ZRAM on low mem machines helps a lot Endless and ChromeOS are doing this. It would be nice to have a systemd service which does this conditionally, filed: https://github.com/systemd/systemd/issues/8990 Fedora systemd unit for setting up ZRAM: https://github.com/mystilleef/FedoraZram
1.4. GSD daemons
gsd-mouse |
only works on X11, depends on setting |
https://bugzilla.gnome.org/show_bug.cgi?id=796141 https://bugzilla.gnome.org/show_bug.cgi?id=690055 |