I currently can't reproduce the situation of taking more than 1 CPU core. I didn't do anything differently, just rebooted it a day later and got different results.
Now I'm seeing the following, not a huge amount of CPU time, but more than expected from an idle system with the screen locked and nothing happening. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1913 mobian 20 0 5447112 410056 196544 S 2.0 5.3 0:24.27 plasmashell 1537 mobian 20 0 106568 10732 6916 S 1.3 0.1 0:07.15 pipewire 1544 mobian 20 0 186116 17092 7492 S 1.3 0.2 0:07.00 pipewire-pulse root@op6a:~# strace -p 1537 strace: Process 1537 attached epoll_pwait(5, The pipewire process is waiting, how can it be using CPU time? root@op6a:~# strace -p 1544 2>&1|head strace: Process 1544 attached epoll_pwait(4, [{events=EPOLLIN, data={u32=201999296, u64=187651618128832}}], 32, -1, NULL, 8) = 1 read(5, "\1\0\0\0\0\0\0\0", 8) = 8 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLOUT, data={u32=205036208, u64=187651621165744}}], 32, -1, NULL, 8) = 1 sendto(44, "\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 20, MSG_DONTWAIT| MSG_NOSIGNAL, NULL, 0) = 20 sendto(44, "\0\0\0\0", 4, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 4 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLIN, data={u32=201999296, u64=187651618128832}}], 32, -1, NULL, 8) = 1 read(5, "\1\0\0\0\0\0\0\0", 8) = 8 root@op6a:~# strace -p 1544 2>&1|head -20 strace: Process 1544 attached epoll_pwait(4, [{events=EPOLLIN, data={u32=201999296, u64=187651618128832}}], 32, -1, NULL, 8) = 1 read(5, "\1\0\0\0\0\0\0\0", 8) = 8 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLOUT, data={u32=205036208, u64=187651621165744}}], 32, -1, NULL, 8) = 1 sendto(44, "\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20, MSG_DONTWAIT| MSG_NOSIGNAL, NULL, 0) = 20 sendto(44, "\0\0\0\0", 4, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 4 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLIN, data={u32=201999296, u64=187651618128832}}], 32, -1, NULL, 8) = 1 read(5, "\1\0\0\0\0\0\0\0", 8) = 8 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLOUT, data={u32=205036208, u64=187651621165744}}], 32, -1, NULL, 8) = 1 sendto(44, "\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 20, MSG_DONTWAIT| MSG_NOSIGNAL, NULL, 0) = 20 sendto(44, "\0\0\0\0", 4, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 4 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLIN, data={u32=201999296, u64=187651618128832}}], 32, -1, NULL, 8) = 1 read(5, "\1\0\0\0\0\0\0\0", 8) = 8 epoll_ctl(4, EPOLL_CTL_MOD, 44, {events=EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP, data={u32=205036208, u64=187651621165744}}) = 0 epoll_pwait(4, [{events=EPOLLOUT, data={u32=205036208, u64=187651621165744}}], 32, -1, NULL, 8) = 1 sendto(44, "\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20, MSG_DONTWAIT| MSG_NOSIGNAL, NULL, 0) = 20 root@op6a:~# ls -l /proc/1544/fd/5 lrwx------ 1 mobian mobian 64 Jan 17 00:08 /proc/1544/fd/5 -> 'anon_inode: [eventfd]' root@op6a:~# ls -l /proc/1544/fd/44 lrwx------ 1 mobian mobian 64 Jan 17 00:02 /proc/1544/fd/44 -> 'socket: [18425]' The pipewire-pulse program is looking on an eventfd and writing to a socket in a fairly tight loop. As for plasmashell, what it does is more complex and I'm not sure if it's connected to the pipewire CPU use. For desktop use probably most people would be happy to let these processes use 1% CPU time each for as long as the system is used. For even a laptop this probably isn't a problem. But for a phone it's a real problem. -- My Main Blog http://etbe.coker.com.au/ My Documents Blog http://doc.coker.com.au/