我最近将这台笔记本电脑更新到了 Fedora 28 Beta 和 Gnome 3.28。事情大多都很好。
但有些事情很奇怪。这不会引起问题,因为这都是虚拟内存。
但为什么这些守护进程要分配 100+ GB 的虚拟内存呢?
0 1000 2012 1719 20 0 101649024 32904 SyS_po Sl ? 0:00 /usr/libexec/goa-daemon
0 1000 1983 1719 20 0 101704260 46416 SyS_po Sl ? 0:00 /usr/libexec/gnome-shell-calendar-server
0 1000 2210 1765 20 0 101736292 33656 SyS_po Sl+ tty2 0:00 /usr/libexec/deja-dup/deja-dup-monitor
0 1000 2452 1719 20 0 101927808 45988 SyS_po Ssl ? 0:00 /usr/libexec/evolution-addressbook-factory
0 1000 2240 1765 20 0 102007840 57328 SyS_po Sl+ tty2 0:00 /usr/libexec/evolution/evolution-alarm-notify
0 1000 2415 2288 20 0 102356528 47216 SyS_po Sl ? 0:00 /usr/libexec/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.Calendarx2288x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/Calendar/2288/2
0 1000 2021 1719 20 0 102405692 46532 SyS_po Ssl ? 0:00 /usr/libexec/evolution-source-registry
0 1000 2288 1719 20 0 118711416 46164 SyS_po Ssl ? 0:00 /usr/libexec/evolution-calendar-factory
0 1000 2518 2452 20 0 119163652 49648 SyS_po Sl ? 0:00 /usr/libexec/evolution-addressbook-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.AddressBookx2452x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/AddressBook/2452/2
答案1
所有这些守护进程都使用 WebKit(主要是为了显示 oauth2 登录提示),并且 WebKit 最近引入了 gigacages 来隔离其 JS 实现使用的堆。千兆容量的分配足够大,以至于对任意无符号 32 位偏移量的任何访问仍然会落在千兆容量中,从而导致这些巨大的分配。有关千兆容量的更多详细信息,请参阅此博客文章:https://labs.mwrinfosecurity.com/blog/some-brief-notes-on-webkit-heap-hardening/