Process systemd-logind constant 3-7%CPU usage, scanning camera and audio devices

I suspect I have same issue, I noticed that my battery life got worse suddenly, and crest showed systemd-logind and systemd-udevd with 20-30% usage.

Investigating with htop shows CPU usage spiking periodically. With the screen off htop shows even 70+% prolonged usage for systemd-logind during these spikes, with the screen on cpu usage spikes may appear, but these services do not always appear to be the cause.

Using trace, when screen is off, it can be seen that it spends lots of time doing open_at:

systemd-logind screen off

openat(19, "card0", O_RDONLY|O_LARGEFILE|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 18
fstat64(18, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(19)                               = 0

...

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 23.69    3.419493          76     44980           openat
 20.49    2.957528          65     44980           close
 19.98    2.883829      151780        19           epoll_wait
 17.84    2.575281          62     40951           fstat64
  3.98    0.573906          72      7891           read
  3.73    0.538043          90      5965           readlinkat
  2.98    0.429861         108      3966           access
  1.99    0.286792          72      3968           getuid32
...

With the screen on, systemd-logind processes seems to spend all (or most) of their time in epoll_wait, which might be expected (?):

systemd-logind screen on

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00  560.319002    56031900        10           epoll_wait
  0.00    0.003293         109        30           clock_gettime
...

systemd-udevd appears to spend most of the time at epoll_wait, regardless of screen being off:

systemd-udevd screen off

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 95.83   20.361790       27778       733           epoll_wait
  0.98    0.207701          88      2347           clock_gettime
  0.92    0.195842         709       276           close

systemd-udevd screen on

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.91   52.486729      133554       393           epoll_wait
  0.26    0.137046        2141        64           clone
  0.24    0.127409         101      1251           clock_gettime
....