Resource consumption for indexing user data, especially files and mails

Martin Steigerwald martin at lichtvoll.de
Sat Jun 26 12:03:29 BST 2021


Dear KDE community.

Thank you gladly for the energy efficiency goal. I do not fully buy into 
the climate catastrophe narrative anymore – there appear to be quite 
some scientists who doubt it meanwhile –, yet I think there still are 
many reasons to make things energy efficient like pro-longed battery life 
for laptops, reducing user frustration, stabilizing energy distribution 
networks and cheaper energy bills.


As mostly an user, who helps with bug reporting / triaging from time to 
time, yet only did one or two commits so far – regarding a performance 
issue in Akonadi's maildir resource –, I like to bring up a topic that 
from a quick skimming through your talk, Cornelius, I think was not 
mentioned explicitly so far. I just quickly skimmed through it instead 
of watching it fully, so I could have missed it.

I think it is good and important to measure the energy efficiency of 
applications like Okular, KMail and Krita.

But there is an aspect that I think would be important to include within 
the measurement or measure separately. That is that of the background 
services required to keep applications working and that of general 
background services like desktop search. Especially when it comes to 
indexing and searching. I do not have global numbers, but I wouldn't be 
surprised if the energy used for indexing the internet would be 
enormous. And every efficiency gain there would have a huge effect.

Similar for the desktop. Users often enough have lots of mails and lots 
of files. The work to index those is done on a huge lot of user systems 
so there is quite a multiplication factor.

Just an example from my new ThinkPad T14 Gen 1 AMD with AMD Ryzen 7 PRO 
4750U, 32 GiB of RAM and a Samsung 980 Pro 2 TB NVMe SSD:

% du -sh .local/share/akonadi/search_db .local/share/local-mail .local/
share/akonadi/file_db_data .local/share/akonadi/db_data
8,8G    .local/share/akonadi/search_db
17G     .local/share/local-mail
6,2G    .local/share/akonadi/file_db_data
3,3G    .local/share/akonadi/db_data

(Instead of several usually empty IMAP accounts, cause I move mails to 
local folders after reading, and one IMAP account which holds 2 weeks of 
mails for smartphone access, that I configured in KMail in order to 
create Sieve rules, all mails are stored locally)

Akonadi Indexing Agent is still not finished with indexing it. Akonadi 
moves all files through the Akonadi cache, i.e. either PostgreSQL 
database and/or file-based storage, in order to index them. This is 
eating up 2-4 CPU cores since hours. 2-3 of them for PostgreSQL related 
processes. In addition to that there is considerable disk usage which 
keeps that fast NVMe SSD, granted with BTRFS on top of LVM on top of 
LUKS – thus additional processing for encryption required –, at 80-100% 
busy most of the time writing about 300-400 MiB every 10 seconds in 
about 10000-20000 write operations every 10 seconds according to atop. I 
did not look at atopsar reports so it may not be completely constant, 
but whenever I looked atop, I saw this kind of workload going on.

Daniel Vrátil worked previously on fixing that with his work to make 
indexing great again¹. However as I understand he eventually kind of 
burned out.


Another example is Baloo:

% LANG=en balooctl status
Baloo File Indexer is running
Indexer state: Suspended
Total files indexed: 1,191,389
Files waiting for content indexing: 278,274
Files failed to index: 0
Current size of index is 8.12 GiB

In this case Baloo apears to be indexing the same files a *third* time 
meanwhile. It relies on device numbers being stable across reboots which 
is not guaranteed by the Linux kernel². I suspended it in the hope that 
the Akonadi mail indexing of mostly locally stored mails would 
eventually finish. The machine would have more than enough CPU power to 
do the file indexing in parallel, but I would like to ease load on /home 
for the time being. Usually I just removed execute permissions from /
usr/bin/akonadi_indexing – but this time I hope this new laptop is 
powerful enough so that Akonadi would eventually complete the task.


I did not yet fully learn how you monitor application energy 
consumption, how you determine which processes to monitor, I just 
skimmed through your presentation instead of watching it fully. But I 
kindly ask you to consider the considerable amount of background 
activity regarding to indexing user data and monitor the resource 
consumption from that as well.

I understand that making indexing work efficiently can be a hard task to 
solve. I do not have exact numbers, yet I think that indexing user data 
is one of the major contributors to energy and other resource 
consumption in KDE. The laptop is basically venting the fan at 3600 to 
4000 rpm basically constantly since some time yesterday when it started 
indexing mails. This may be an over cautious fan activity by default 
firmware, however often enough when really idle the fan is not active at 
all.

I know this topic has been brought up by users over and over again. But 
I think the main reason for that is, that the issue is still not fixed. I 
bet it is no low-hanging fruit and I hope that eventually someone with 
enough in-depth knowledge on the involved technologies *and* enough time 
would work on fixing these issues. I'd be willing to spend some money on 
that work – similar like a Krita fundraiser.

[1] Make Indexing Great Again

https://phabricator.kde.org/T7014

[2] Bug 438434 - Baloo appears to be indexing twice the number of files 
than are actually in my home directory

https://bugs.kde.org/show_bug.cgi?id=438434

Best,
-- 
Martin




More information about the Energy-efficiency mailing list