High background CPU usage in joplin-desktop

Operating system

Linux

Joplin version

2.14.22

Desktop version info

Joplin 2.14.22 (prod, linux)

Client ID: 569dee4475584d6b8a685abb6870e07a
Sync Version: 3
Profile Version: 46
Keychain Supported: No

Agenda: 3.7.1
Enhancement: 1.2.1
Repeating To-Dos: 0.10.3
Simple Backup: 1.3.3
Table Formatter Plugin: 1.2.1

Sync target

Joplin Cloud

Editor

Rich Text Editor

What issue do you have?

I've noticed recently that joplin-desktop is often running near 100% of one CPU core on my Linux laptop, generating a stream of log entries, such as:

2024-06-07 11:06:14: "SearchEngine: Updating FTS table..."
2024-06-07 11:06:14: "Updating items_normalized from", "{"updated_time":1717782586880,"id":"7832b94ead464196ba924fafdf6f1aed"}"
2024-06-07 11:06:14: "SearchEngine: Updated FTS table in 41ms. Inserted: 1. Deleted: 0"
2024-06-07 11:06:29: "SearchEngine: Updating FTS table..."
2024-06-07 11:06:30: "Updating items_normalized from", "{"updated_time":1717782586880,"id":"7832b94ead464196ba924fafdf6f1aed"}"
2024-06-07 11:06:30: "SearchEngine: Updated FTS table in 369ms. Inserted: 1. Deleted: 0"
2024-06-07 11:06:44: "SearchEngine: Updating FTS table..."
2024-06-07 11:06:44: "Updating items_normalized from", "{"updated_time":1717782586880,"id":"7832b94ead464196ba924fafdf6f1aed"}"
2024-06-07 11:06:44: "SearchEngine: Updated FTS table in 52ms. Inserted: 1. Deleted: 0"
2024-06-07 11:06:59: "SearchEngine: Updating FTS table..."
2024-06-07 11:07:00: "Updating items_normalized from", "{"updated_time":1717782586880,"id":"7832b94ead464196ba924fafdf6f1aed"}"
2024-06-07 11:07:00: "SearchEngine: Updated FTS table in 36ms. Inserted: 1. Deleted: 0"

I'm not noticing a performance impact, but it does warm my laptop and drain its battery. Is there any way to calm this activity down?

David

More information...

  • Disabling the Agenda plugin stops this behavior.
  • The "Updating items_normalized from" log records show that the same resource (an attachment to what may be a note or a to-do) is being processed multiple times (I saw as many as 1997 times over a period of more than 2 days.), and then it moves on to another resource. Only 12 resources were processed between 2024-06-06 and 2024-06-12, but accounted for approximately 100% utilization of a CPU core while Joplin was running with Agenda enabled.

Agenda is great, but I know it has no maintainer, so I guess I'll look for a replacement if nobody has any clever ideas.

And even more information:

  • Using Joplin's search to find the resource ID from the most recent "Updating items_normalized from" log records finds Agenda's "overview note," as well as the note that actually contains the resource. That resource ID is not referenced in the contents of the overview note, however.
  • Clearing the "Overview Note ID" field in Agenda's profile configuration and deleting the overview note stops high CPU use. After each sync, there is one (but only one) more "Updating items_normalized from" log record.

Would be great to see more app settings and neofetch/specs you're using

Seeing the last post, is your problem completely solved or there's more?

Does performance get better in safe mode?

As a replacement for agenda maybe Calendar plugin would suffice?

Thanks for your reply. Here are some answers...

Would be great to see more app settings and neofetch/specs you're using

Sure. Is there an easy way to do that without sending screenshots?

Seeing the last post, is your problem completely solved or there's more?

As it turns out, no. A while after disabling the overview note, I started seeing high CPU use again, but nothing in log.txt. Running joplin with --log-level debug, though, found that when the Repeating To-Dos plugin is enabled, I get repeating sequences of log records of the form:

2024-06-13 12:10:44: PluginRunner: "Got message (3): joplin.data.get", "[["notes
"],{"fields":["id","todo_due","todo_completed"],"page":0}]"
2024-06-13 12:10:44: PluginRunner: "Got message (3): joplin.data.get", "[["notes
"],{"fields":["id","todo_due","todo_completed"],"page":1}]"
2024-06-13 12:10:44: PluginRunner: "Got message (3): joplin.data.get", "[["notes
"],{"fields":["id","todo_due","todo_completed"],"page":2}]"

running from "page":0 to "page":202 and then repeating the sequence from "page":0.

Does performance get better in safe mode?

Yes.

As a replacement for agenda maybe Calendar plugin would suffice?

I've been looking for replacements, particularly since Agenda and Repeating To-Dos lack a maintainer (and, apparently, are now no longer in the official list of plugins). I see Event Calendar, Joplin Calendar, and Life Calendar plugins, but they don't seem to manage to-do's. Is there a Calendar plugin that I'm missing? Frankly, just enabling due date as a sort key in the regular note list would suffice, if minimalist.

Thanks again!

1 Like

~/.config/joplin-desktop/settings.json seems to have all the info. It does contain your webcliper token (sensitive info), therefore renew it in the webclipper settings after sending the .json contents


nope, all I know is what you've listed.


As of now your problem seems to be with plugins but potentially might be somewhere else. So, let's see the settings and specs first.

Just off the top of my mind places where performance issues might be:

  • too many spellchecking langs
  • OCR malfunctioning
  • keeping dev tools console open
  • weak CPU: 2 cores or fewer
  • weak disk: HDD or USB
  • not enough ram: Joplin may consume 2+GB of ram, launching CPU into frenzy due to swap caching
  • overheating due to load may make performance much worse than usual
  • encryption
  • many (in hundreds or more) simultanious changes of notes or resources
  • complex custom CSS styling
    etc?
1 Like

Thanks. Here's my settings.json with the API token obscured: settings.json (2.8 KB)

Agreed. The issue has gone away now that I've removed the Agenda plugin's overview note and disabled the Repeating To-Dos plugin, but one never knows.

I haven't added any languages other than what was initially installed. (I'm running this under Flatpak, by the way.)

Disabling OCR was my first attempt to address the high CPU use; I think it did reduce CPU usage, but the usage was still very high. I did enable it and left it running on a Raspberry Pi 4b "desktop" system that is sync'd with my laptop (and phone) via Joplin Cloud.

I have opened it, but that's rare.

I have a "11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz" with 4 cores with hyperthreading (so they look like 8 cores).

"Sandisk WD Black SN750 / PC SN730 NVMe SSD"

8GB

I did have an instance of significant throttling when a duplicity backup and syncthing were CPU intensive at the same time while Joplin was doing its continuous high-CPU warming, but I haven't noticed it since.

Just the normal Joplin sync encryption.

Not that I know of. I suppose something might cause that through sync'ing, but certainly not continuously. Maybe the OCR work being done on the Raspberry Pi system I mentioned above?

I did have some custom CSS for "Joplin-wide app styles" at one time, but I had removed it by the time I started having the high CPU usage.

I do have a large number of items:

Sync status (synced items / total items)
Note: 20157/20157
Folder: 65/65
Resource: 52251/52251
Tag: 17/17
NoteTag: 18185/18185
Revision: 362/362
Total: 91037/91037

I have the same problem, Joplin getting high on one core of my I5 laptop. But I don't have the agenda plugin installed, so don't know what that is all about.

Since there's indeed tens of thousands items I think maybe update to 3.0+ might help

It's quite stable nowadays but if possible i recommend to test it on different machine user with the same data but no sync (so not to contaminate your main sync target if things go wrong)

SRC: Slowness and sometimes “the window is not responding” error message - #19 by nonobio

Also it might worth to check for unused or faulty resources with batch tool as well

https://joplin-utils.rxliuli.com/web/joplin-batch-web/#/

Thanks, @graphit0. Since I have at least a temporary workaround, I think I'll wait for 3.0+ to be officially released. I will look at joplin-batch, though; it looks useful.

@mke21, one thing I've learned through this event is that many things can cause high CPU use; in my case, I've had more than one. The log (~/.config/joplin-desktop/log.txt on Linux) can give you hints, and running joplin-desktop with "--log-level debug" will put more hints into the log. They're only hints, but watching the log and your CPU utilization at the same time can help you figure out what's going on.

1 Like