News Martin Wimpress

The number two question in the Ubuntu MATE community right now is:

Does MATE Desktop built against GTK3 require more memory than MATE Desktop built against GTK2?

The answer is Yes, but No. Read on for a full explanation.

Let’s also take this opportunity to deal with another claim that cropped up recently, that MATE Desktop 1.14.1 on Ubuntu MATE 16.04 uses significantly more memory that MATE Desktop 1.12.1 on Ubuntu MATE 16.04.

Test conditions

MATE Desktop 1.12.1 and MATE Desktop 1.14.1 for Ubuntu MATE 16.04 are both built against GTK2 only .

. These RAM comparisons were generated using ps_mem, because this is the correct tool for accurately measuring memory consumption, one does not simply measure RAM consumption using System Monitor.

If you want to tinker with ps_mem yourself it can be installed as follows:

sudo apt update sudo apt install python-pip sudo pip install ps_mem

Method for 16.04

Ubuntu MATE 16.04 was installed in a VM and fully upgraded and Ubuntu MATE Welcome autostart was disabled, but all other defaults were used in all tests. Upon login, CRTL + ALT + t was pressed to start a terminal and the following script was run:

#!/usr/bin/env bash SLEEP = 90 if [ $( id -u ) != 0 ] ; then echo "You're not root you peasant!" exit 0 fi VER = $( mate-about -v | sed 's/ /_/g' ) echo "Profiling ${ VER } " echo "Sleeping for ${ SLEEP } secs" sleep ${ SLEEP } ps_mem | tee -a ${ VER } .txt echo "Done"

After the results were collected for Ubuntu MATE 16.04 running MATE Desktop 1.12.1 the system was upgraded to MATE Desktop 1.14.1 and rebooted twice. Upon login the same script was executed in the same way.

Method for 16.10

Ubuntu MATE 16.10 daily was installed in a VM and fully upgraded and Ubuntu MATE Welcome autostart was disabled, but all other defaults were used in all tests. Upon login, CRTL + ALT + t was pressed to start a terminal and the same script, as described above, was run.

Results

Here are the results:

OS Desktop Tool Kit RAM (MiB) Ubuntu MATE 16.04 MATE Desktop 1.12.1 GTK2 353.0 Ubuntu MATE 16.04 MATE Desktop 1.14.1 GTK2 358.4 Ubuntu MATE 16.10 (pre-alpha) MATE Desktop 1.14.1 *GTK3* 351.7





Conclusions

Here are some quick conclusions:

MATE Desktop 1.14.1 does not use significantly more RAM that MATE Desktop 1.12.1 , when both are built again GTK2.

, when both are built again GTK2. Ubuntu MATE 16.10 (pre-alpha) using MATE Desktop 1.14.1 built against GTK3 uses less RAM than either Ubuntu MATE 16.04 configuration using GTK2.

That second point needs some explaination because the detailed ps_mem output included at the end of this blog post clearly shows that all MATE applications built against GTK3 use more RAM than their GTK2 counterparts.

Ubuntu MATE 16.10 (pre-alpha) is using less RAM than Ubuntu MATE 16.04 for the following reasons:

Tilda is no longer executed by default in Ubuntu MATE 16.10 , it is now an option in MATE Tweak.

, it is now an option in MATE Tweak. Network Manager uses systemd-resolved via libnss-resolve for DNS lookups in 16.10 as opposed to dnsmasq in 16.04. This makes Network Manager ever so slightly less resource intensive in Ubuntu 16.10 .

via for DNS lookups in 16.10 as opposed to in 16.04. This makes . All the default applications and components started in the default Ubuntu MATE 16.10 configuration use GTK3 only, none use GTK2. So only one toolkit is resident in memory, not two as in Ubuntu MATE 16.04.

Full ps_mem output

For completeness here is the ps_mem output for each test.

Ubuntu MATE 16.04 with MATE Desktop 1.12.1 built against GTK2.

Private + Shared = RAM used Program 156.0 KiB + 43.0 KiB = 199.0 KiB tee 160.0 KiB + 40.5 KiB = 200.5 KiB gnome-pty-helper 152.0 KiB + 49.0 KiB = 201.0 KiB avahi-dnsconfd 224.0 KiB + 32.0 KiB = 256.0 KiB acpid 276.0 KiB + 46.5 KiB = 322.5 KiB agetty 320.0 KiB + 51.5 KiB = 371.5 KiB irqbalance 328.0 KiB + 88.5 KiB = 416.5 KiB cron 400.0 KiB + 93.0 KiB = 493.0 KiB rtkit-daemon 464.0 KiB + 95.5 KiB = 559.5 KiB dbus-launch 564.0 KiB + 21.5 KiB = 585.5 KiB ssh-agent 624.0 KiB + 108.0 KiB = 732.0 KiB dconf-service 648.0 KiB + 149.5 KiB = 797.5 KiB gvfs-mtp-volume-monitor 756.0 KiB + 127.0 KiB = 883.0 KiB gvfs-goa-volume-monitor 776.0 KiB + 198.0 KiB = 974.0 KiB at-spi2-registryd 836.0 KiB + 141.0 KiB = 977.0 KiB dnsmasq 932.0 KiB + 72.5 KiB = 1.0 MiB systemd-logind 784.0 KiB + 243.0 KiB = 1.0 MiB gvfsd 396.0 KiB + 637.0 KiB = 1.0 MiB avahi-daemon (2) 900.0 KiB + 187.0 KiB = 1.1 MiB accounts-daemon 896.0 KiB + 199.0 KiB = 1.1 MiB gvfs-gphoto2-volume-monitor 988.0 KiB + 153.0 KiB = 1.1 MiB gvfsd-fuse 924.0 KiB + 296.0 KiB = 1.2 MiB gvfsd-dnssd 992.0 KiB + 281.0 KiB = 1.2 MiB gvfsd-trash 1.0 MiB + 293.5 KiB = 1.3 MiB gvfsd-network 1.1 MiB + 248.0 KiB = 1.3 MiB sudo 1.4 MiB + 76.5 KiB = 1.5 MiB rsyslogd 1.3 MiB + 260.0 KiB = 1.6 MiB deja-dup-monitor 1.3 MiB + 320.5 KiB = 1.6 MiB ntpd 1.5 MiB + 71.5 KiB = 1.6 MiB systemd-journald 1.2 MiB + 472.0 KiB = 1.6 MiB gvfs-afc-volume-monitor 1.2 MiB + 546.0 KiB = 1.8 MiB (sd-pam) 2.0 MiB + 41.0 KiB = 2.0 MiB dhclient 1.6 MiB + 461.5 KiB = 2.0 MiB cupsd 1.6 MiB + 432.0 KiB = 2.1 MiB gvfs-udisks2-volume-monitor 1.9 MiB + 199.0 KiB = 2.1 MiB gnome-keyring-daemon 1.6 MiB + 547.5 KiB = 2.1 MiB upowerd 1.5 MiB + 768.0 KiB = 2.2 MiB cups-browsed 1.6 MiB + 753.0 KiB = 2.3 MiB dbus (2) 1.7 MiB + 724.0 KiB = 2.4 MiB lightdm (2) 2.4 MiB + 136.0 KiB = 2.5 MiB systemd-udevd 2.6 MiB + 194.0 KiB = 2.8 MiB at-spi-bus-launcher 2.1 MiB + 805.0 KiB = 2.9 MiB polkit-mate-authentication-agent-1 2.4 MiB + 841.5 KiB = 3.2 MiB mate-session 2.1 MiB + 1.2 MiB = 3.3 MiB whoopsie 2.8 MiB + 645.0 KiB = 3.4 MiB dbus-daemon (3) 2.5 MiB + 930.0 KiB = 3.4 MiB mate-power-manager 2.9 MiB + 935.0 KiB = 3.8 MiB mate-maximus 3.5 MiB + 362.0 KiB = 3.8 MiB ModemManager 3.3 MiB + 898.5 KiB = 4.2 MiB notification-area-applet 2.1 MiB + 2.2 MiB = 4.3 MiB systemd (2) 3.7 MiB + 633.0 KiB = 4.3 MiB obexd 4.4 MiB + 216.0 KiB = 4.6 MiB polkitd 3.5 MiB + 1.2 MiB = 4.7 MiB bash (3) 4.8 MiB + 377.0 KiB = 5.1 MiB udisksd 3.9 MiB + 1.2 MiB = 5.2 MiB trashapplet 5.2 MiB + 612.0 KiB = 5.8 MiB pulseaudio 4.7 MiB + 1.1 MiB = 5.9 MiB marco 4.7 MiB + 1.4 MiB = 6.1 MiB clock-applet 4.4 MiB + 2.0 MiB = 6.4 MiB mate-volume-control-applet 6.1 MiB + 824.5 KiB = 6.9 MiB NetworkManager 5.2 MiB + 1.8 MiB = 7.0 MiB wnck-applet 6.9 MiB + 1.7 MiB = 8.6 MiB mate-settings-daemon 6.8 MiB + 2.2 MiB = 9.0 MiB mate-terminal 8.1 MiB + 921.5 KiB = 9.0 MiB gvfsd-smb-browse 8.3 MiB + 923.5 KiB = 9.2 MiB mate-screensaver 8.7 MiB + 1.9 MiB = 10.6 MiB mate-panel 8.8 MiB + 7.6 MiB = 16.4 MiB update-notifier 10.9 MiB + 8.1 MiB = 18.9 MiB nm-applet 16.9 MiB + 2.9 MiB = 19.8 MiB applet.py 14.2 MiB + 8.1 MiB = 22.3 MiB tilda 21.7 MiB + 3.1 MiB = 24.8 MiB caja 21.9 MiB + 5.8 MiB = 27.8 MiB blueman-applet 25.2 MiB + 5.9 MiB = 31.1 MiB Xorg --------------------------------- 353.0 MiB =================================

Ubuntu MATE 16.04 with MATE Desktop 1.14.1 built against GTK2.

Private + Shared = RAM used Program 152.0 KiB + 48.0 KiB = 200.0 KiB avahi-dnsconfd 156.0 KiB + 45.0 KiB = 201.0 KiB tee 164.0 KiB + 43.5 KiB = 207.5 KiB gnome-pty-helper 224.0 KiB + 33.0 KiB = 257.0 KiB acpid 292.0 KiB + 46.5 KiB = 338.5 KiB agetty 324.0 KiB + 49.5 KiB = 373.5 KiB irqbalance 324.0 KiB + 85.5 KiB = 409.5 KiB cron 396.0 KiB + 87.0 KiB = 483.0 KiB rtkit-daemon 460.0 KiB + 94.5 KiB = 554.5 KiB dbus-launch 584.0 KiB + 21.5 KiB = 605.5 KiB ssh-agent 628.0 KiB + 112.0 KiB = 740.0 KiB dconf-service 652.0 KiB + 150.5 KiB = 802.5 KiB gvfs-mtp-volume-monitor 672.0 KiB + 191.0 KiB = 863.0 KiB at-spi-bus-launcher 824.0 KiB + 131.0 KiB = 955.0 KiB gvfs-goa-volume-monitor 780.0 KiB + 195.0 KiB = 975.0 KiB at-spi2-registryd 844.0 KiB + 138.0 KiB = 982.0 KiB dnsmasq 912.0 KiB + 75.5 KiB = 987.5 KiB systemd-logind 400.0 KiB + 635.0 KiB = 1.0 MiB avahi-daemon (2) 884.0 KiB + 198.0 KiB = 1.1 MiB gvfs-gphoto2-volume-monitor 908.0 KiB + 178.0 KiB = 1.1 MiB accounts-daemon 1.0 MiB + 150.0 KiB = 1.1 MiB gvfsd-fuse 956.0 KiB + 298.0 KiB = 1.2 MiB gvfsd-dnssd 1.0 MiB + 276.0 KiB = 1.3 MiB gvfsd-trash 1.0 MiB + 291.5 KiB = 1.3 MiB gvfsd-network 1.1 MiB + 244.0 KiB = 1.3 MiB sudo 1.4 MiB + 80.5 KiB = 1.5 MiB rsyslogd 1.3 MiB + 262.0 KiB = 1.6 MiB deja-dup-monitor 1.3 MiB + 323.5 KiB = 1.6 MiB ntpd 1.2 MiB + 451.0 KiB = 1.6 MiB gvfs-afc-volume-monitor 1.6 MiB + 70.5 KiB = 1.6 MiB systemd-journald 1.4 MiB + 588.0 KiB = 1.9 MiB (sd-pam) 1.6 MiB + 383.5 KiB = 2.0 MiB cupsd 1.9 MiB + 40.0 KiB = 2.0 MiB dhclient 1.8 MiB + 203.0 KiB = 2.0 MiB gnome-keyring-daemon 1.6 MiB + 416.0 KiB = 2.0 MiB gvfs-udisks2-volume-monitor 1.4 MiB + 756.0 KiB = 2.2 MiB cups-browsed 2.1 MiB + 135.0 KiB = 2.2 MiB systemd-udevd 1.7 MiB + 721.0 KiB = 2.4 MiB lightdm (2) 2.4 MiB + 230.0 KiB = 2.6 MiB polkitd 2.1 MiB + 767.0 KiB = 2.9 MiB polkit-mate-authentication-agent-1 2.8 MiB + 243.0 KiB = 3.0 MiB gvfsd 2.8 MiB + 373.0 KiB = 3.1 MiB udisksd 2.1 MiB + 1.2 MiB = 3.2 MiB whoopsie 2.4 MiB + 836.5 KiB = 3.2 MiB mate-session 2.8 MiB + 650.0 KiB = 3.4 MiB dbus-daemon (3) 2.6 MiB + 926.0 KiB = 3.5 MiB mate-power-manager 2.9 MiB + 917.0 KiB = 3.8 MiB mate-maximus 3.5 MiB + 374.0 KiB = 3.9 MiB ModemManager 3.6 MiB + 525.5 KiB = 4.1 MiB upowerd 3.3 MiB + 888.5 KiB = 4.1 MiB notification-area-applet 3.7 MiB + 612.0 KiB = 4.3 MiB obexd 2.2 MiB + 2.2 MiB = 4.4 MiB systemd (2) 3.1 MiB + 1.3 MiB = 4.4 MiB dbus (4) 3.6 MiB + 1.2 MiB = 4.7 MiB bash (3) 3.9 MiB + 1.2 MiB = 5.1 MiB trashapplet 4.3 MiB + 921.5 KiB = 5.2 MiB mate-screensaver 5.1 MiB + 662.0 KiB = 5.7 MiB pulseaudio 4.7 MiB + 1.1 MiB = 5.8 MiB marco 4.4 MiB + 2.0 MiB = 6.3 MiB mate-volume-control-applet 5.0 MiB + 1.6 MiB = 6.5 MiB wnck-applet 6.3 MiB + 791.5 KiB = 7.1 MiB NetworkManager 6.7 MiB + 1.5 MiB = 8.1 MiB clock-applet 6.9 MiB + 1.8 MiB = 8.7 MiB mate-settings-daemon 8.0 MiB + 896.5 KiB = 8.9 MiB gvfsd-smb-browse 6.7 MiB + 2.2 MiB = 8.9 MiB mate-terminal 10.6 MiB + 1.9 MiB = 12.4 MiB mate-panel 10.5 MiB + 7.4 MiB = 17.9 MiB update-notifier 11.5 MiB + 7.8 MiB = 19.3 MiB nm-applet 16.6 MiB + 2.9 MiB = 19.5 MiB applet.py 15.4 MiB + 7.5 MiB = 22.8 MiB tilda 21.9 MiB + 3.2 MiB = 25.1 MiB caja 24.0 MiB + 5.9 MiB = 29.9 MiB blueman-applet 27.1 MiB + 5.6 MiB = 32.7 MiB Xorg --------------------------------- 358.4 MiB =================================

Ubuntu MATE 16.10 with MATE Desktop 1.14.1 built against GTK3.