Recently we noticed our Chromium began to behavior really strange (we noticed it from Chromium version 69). When starting the Chromium browser the system tended to lag for 4-8 seconds and it was apparently connected with the browsers’ tabs opened in the previous session.
These days many people open multiple Internet pages in the browsers’ tabs and even more use the feature of
quitting the browser and then starting it back and the browser restores the previous session – all tabs with the pages loaded before.
. And time passes and we get used to open and leave more and more tabs, so not it is normal to have more than 30 opened page tabs in your browser, but last versions of the Chromium something has changed, because when you start the browser it completely loads all the pages, we do not think this was the case before so we dig it into the problem.
We use Chromium under (Gentoo) Linux and here is the problem:
top - 16:20:09 up 16 days, 16:36, 14 users, load average: 4.77, 0.55, 0.43 Tasks: 288 total, 10 running, 201 sleeping, 0 stopped, 0 zombie %Cpu(s): 82.6 us, 16.2 sy, 0.0 ni, 1.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8143960 total, 3012776 free, 3828732 used, 1302452 buff/cache KiB Swap: 7606268 total, 6855752 free, 750516 used. 2554612 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16082 myuser 20 0 3975632 371280 191940 S 106.9 4.6 0:05.86 /usr/lib64/chromium-browser/chrome --extra-plugin-dir=/usr/lib64/nsbrowser/plugins --ppapi-flash-path=+ 16380 myuser 20 0 1779900 116276 76624 S 28.4 1.4 0:00.41 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16420 myuser 20 0 1777396 117096 85464 S 18.6 1.4 0:00.30 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16540 myuser 20 0 1850308 109576 76616 R 17.6 1.3 0:00.24 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16565 myuser 20 0 1769716 108588 81336 S 17.6 1.3 0:00.23 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16400 myuser 20 0 1775876 105220 76932 R 12.7 1.3 0:00.21 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16334 myuser 20 0 1770128 111588 83760 S 11.8 1.4 0:00.26 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 5644 myuser 9 -11 3474604 11112 8368 S 9.8 0.1 14:50.60 /usr/bin/pulseaudio --start --log-target=syslog 16346 myuser 20 0 1772160 103924 76920 R 9.8 1.3 0:00.17 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16369 myuser 20 0 1772060 101696 74928 R 9.8 1.2 0:00.16 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16409 myuser 20 0 1783340 115752 77116 R 9.8 1.4 0:00.18 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16435 myuser 20 0 1770664 105088 81656 S 9.8 1.3 0:00.19 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16483 myuser 20 0 1772228 112008 83176 S 9.8 1.4 0:00.17 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16509 myuser 20 0 1772116 108544 81732 S 9.8 1.3 0:00.20 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16448 myuser 20 0 1771368 101300 74956 R 8.8 1.2 0:00.14 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16459 myuser 20 0 1692864 102668 80676 R 8.8 1.3 0:00.15 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16506 myuser 20 0 1766364 99588 78384 S 7.8 1.2 0:00.15 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16577 myuser 20 0 1767296 102268 80272 S 7.8 1.3 0:00.14 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 21462 myuser 20 0 2599480 493592 95284 S 7.8 6.1 17:00.39 /usr/lib64/firefox/firefox -contentproc -childID 13 -isForBrowser -prefsLen 51222 -schedulerPrefs 0001+ 16417 myuser 20 0 1767568 99584 75992 R 5.9 1.2 0:00.12 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16530 myuser 20 0 1764332 99036 78768 S 5.9 1.2 0:00.11 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16341 myuser 20 0 1688088 96856 77776 S 4.9 1.2 0:00.09 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16395 myuser 20 0 1765648 96284 75132 S 4.9 1.2 0:00.10 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16464 myuser 20 0 1773864 104360 76260 S 4.9 1.3 0:00.12 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16467 myuser 20 0 1765740 96184 75520 S 4.9 1.2 0:00.10 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16491 myuser 20 0 1691968 96864 75744 S 3.9 1.2 0:00.14 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16496 myuser 20 0 1691964 97048 75852 S 3.9 1.2 0:00.18 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16501 myuser 20 0 1691492 92592 72604 S 3.9 1.1 0:00.10 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16578 myuser 20 0 1765432 93580 73868 S 3.9 1.1 0:00.10 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16587 myuser 20 0 1765416 93624 73856 S 3.9 1.1 0:00.10 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 28861 myuser 20 0 3503208 405676 91716 S 3.9 5.0 11:41.21 /usr/bin/firefox 16454 myuser 20 0 1617744 87852 70072 R 2.9 1.1 0:00.09 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 16548 myuser 20 0 1692100 97336 76440 S 2.9 1.2 0:00.13 /usr/lib64/chromium-browser/chrome --type=renderer --file-url-path-alias=/gen=/usr/lib64/chromium-brow+ 5430 root 20 0 510884 133980 116036 S 2.0 1.6 39:33.10 /usr/bin/X -nolisten tcp -auth /var/run/sddm/{0c17f929-befd-402b-a80b-207e92f61272} -background none -+ 16011 myuser 20 0 140316 3192 2632 R 2.0 0.0 0:00.44 top -d1 5193 root -51 0 0 0 0 S 1.0 0.0 97:33.55 [irq/46-iwlwifi] 5601 myuser 20 0 3422104 59664 23276 S 1.0 0.7 41:55.20 /usr/bin/kwin_x11 -session 10147150e9da000152673938100000083010144_1534452204_442575
As you can see starting Chromium it just flooded the system with hungry for CPU processes, so many that even a decent machine with 4 cores will get into troubles with 9 running Chromium process for a while! The load at the first seconds goes to 5-9 (as you can see here is 4.77 from below 1 – actually 0.5 ).
And not only that see what’s going to the RAM:
First with Chromium loaded – all page tabs loaded.
myuser@local ~ $ free -h total used free shared buff/cache available Mem: 7.8G 5.4G 1.1G 429M 1.2G 657M Swap: 7.3G 751M 6.5G
No Chromium loaded.
myuser@local ~ $ free -h total used free shared buff/cache available Mem: 7.8G 3.0G 3.6G 357M 1.1G 3.1G Swap: 7.3G 751M 6.5G
So when you start Chromium with 35 page tabs Chromium will take all your CPU to load the pages and will use 2.5G of RAM making your system almost unusable for around 4-10 seconds depends on how many free RAM and CPU idle you have!
The solution was to ENABLE two options. Open in a new tab “chrome://flags/”
The first one is the most important for the start-up lag!
- Infinite Session Restore – Reduces the number of tabs being loaded simultaneously during session restore, to improve responsiveness of the foreground tab. This requires #enable-page-almost-idle. – Mac, Windows, Linux, Chrome OS (#infinite-session-restore) – ENABLED
- Page Almost Idle – Make session restore use a definition of loading that waits for CPU and network quiescence. – Mac, Windows, Linux, Chrome OS (#page-almost-idle) – ENABLED
In our browser these two options were set to “Default”, so you need to click on the dropdown box and then click on enabled
A hint at the bottom will appear with “Your changes will take effect the next time you relaunch Chromium.” – “RELAUNCH NOW” button, click on it.
And you are going to save a lot of your RAM!!!
5 minutes after Chromium started the ram used by it was just little over 200M
myuser@local ~ $ free -h total used free shared buff/cache available Mem: 7.8G 3.3G 3.2G 370M 1.2G 2.8G Swap: 7.3G 751M
Just to note!
When you enable the above options your Chromium/Chrome page tabs won’t be loaded at start-up, so the pages will load when you open the relative page tab and you must have an Internet connection and of course a time to download and render the page is needed. But considering we often have 30+ page tabs and not using more than 5 or 10 it’s worth “limiting” the memory usage by enabling these options!
First googling there were two options, which DID NOT WORK for us.
Open in a new tab “chrome://flags/”
- Offline Auto-Reload Mode – Pages that fail to load while the browser is offline will be auto-reloaded when the browser is online again. – Mac, Windows, Linux, Chrome OS, Android (#enable-offline-auto-reload) – DISABLED
- Only Auto-Reload Visible Tabs – Pages that fail to load while the browser is offline will only be auto-reloaded if their tab is visible. – Mac, Windows, Linux, Chrome OS, Android (#enable-offline-auto-reload-visible-only) – ENABLED

The loading lag was the same and the same tens of processes starving for CPU cycles. Not to mention the RAM usage.
It’s worth mentioning this experience! First was googling for a minute and when the first solutions did not help we just opened the Chromium’s flags and began to check different options there. We decided first to search the page with “load”, but too many options mentioning load or reload or ~load~, so next search was with “session” – you know from probably loading your previous session 😉 and we got the hit – “Infinite Session Restore” – so read the manual first 😉 even with ctrl+F it’s worth!