Unsorted tentative items

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)

  • 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


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)

Memory usage

Some of this is a bit Fedora workstation specific, sorry about that


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:

GSD daemons


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

Hackfests/Performance2018/Agenda (last edited 2018-05-17 10:36:23 by MarcoTrevisan)