SUMMARY GPU usage always shows 0 after almost one hour's work and nvtop can show my GPU useage correctly STEPS TO REPRODUCE 1. log in,open the systemmonitor(or not) 2. watch video in firefox or do nothing for a while(almost an hour) 3. check the systemmonitor OBSERVED RESULT the GPU useage stuck at 0 EXPECTED RESULT it should show my GPU activity just as nvtop since my gpu works correctly SOFTWARE/OS VERSIONS Linux/KDE Plasma: Arch Linux KDE Plasma Version: 6.4.2 KDE Frameworks Version:6.16.0 Qt Version: 6.9.1 ADDITIONAL INFORMATION it seems that something similer happened in this page two years before https://forum.endeavouros.com/t/plasma-system-monitor-sensor-gpu/34563/14 my GPU: Intel Iris Xe Graphics @ 1.45 GHz [Integrated]
Created attachment 183210 [details] Reproduced the bug 6 hours after boot.
Same thing on Lenovo X1 nano gen2 with Fedora 42.
What is the output of /usr/lib/ksystemstats_intel_helper ?
(In reply to David Redondo from comment #3) > What is the output of > > /usr/lib/ksystemstats_intel_helper 918130|Frequency|0|Interrupts|0|Render|0|Copy|0|Video|0|Enhance|0 1001154944|Frequency|62|Interrupts|150|Render|0|Copy|0|Video|0|Enhance|0 2001713162|Frequency|116|Interrupts|301|Render|0|Copy|0|Video|0|Enhance|0 3002230498|Frequency|177|Interrupts|454|Render|0|Copy|0|Video|0|Enhance|0 4002790081|Frequency|237|Interrupts|606|Render|0|Copy|0|Video|0|Enhance|0 5003320181|Frequency|281|Interrupts|748|Render|0|Copy|0|Video|0|Enhance|0 6003757837|Frequency|335|Interrupts|901|Render|0|Copy|0|Video|0|Enhance|0 7004205303|Frequency|391|Interrupts|1050|Render|0|Copy|0|Video|0|Enhance|0 8004662581|Frequency|477|Interrupts|1204|Render|0|Copy|0|Video|0|Enhance|0 9005085214|Frequency|530|Interrupts|1354|Render|0|Copy|0|Video|0|Enhance|0 10005403405|Frequency|582|Interrupts|1506|Render|0|Copy|0|Video|0|Enhance|0
OK we can open events at least and no obvious errors logged. Also frequency is correctly reported. Could you please attach the output of strace /usr/lib/ksystemstats_intel_helper You can stop it after printing a few 918130|Frequency|0|Interrupts|0|Render|0|Copy|0|Video|0|Enhance|0 lines.
execve("/usr/libexec/ksystemstats_intel_helper", ["/usr/libexec/ksystemstats_intel_"...], 0x7ffe66f01620 /* 28 vars */) = 0 brk(NULL) = 0x5598209e4000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe2d5103000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=119551, ...}) = 0 mmap(NULL, 119551, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe2d50e5000 close(3) = 0 openat(AT_FDCWD, "/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=2635488, ...}) = 0 mmap(NULL, 2580552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe2d4e00000 mmap(0x7fe2d4f41000, 1179648, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x141000) = 0x7fe2d4f41000 mmap(0x7fe2d5061000, 73728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x260000) = 0x7fe2d5061000 mmap(0x7fe2d5073000, 12360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe2d5073000 close(3) = 0 openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2607\0\0\0\0\0\0"..., 832) = 832 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 fstat(3, {st_mode=S_IFREG|0755, st_size=2448320, ...}) = 0 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 mmap(NULL, 2038872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe2d4c0e000 mmap(0x7fe2d4d7d000, 479232, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16f000) = 0x7fe2d4d7d000 mmap(0x7fe2d4df2000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e3000) = 0x7fe2d4df2000 mmap(0x7fe2d4df8000, 31832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe2d4df8000 close(3) = 0 openat(AT_FDCWD, "/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=984456, ...}) = 0 mmap(NULL, 970768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe2d4b20000 mmap(0x7fe2d4b9c000, 458752, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c000) = 0x7fe2d4b9c000 mmap(0x7fe2d4c0c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xeb000) = 0x7fe2d4c0c000 close(3) = 0 openat(AT_FDCWD, "/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=182368, ...}) = 0 mmap(NULL, 176584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe2d50b9000 mmap(0x7fe2d50dc000, 28672, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7fe2d50dc000 mmap(0x7fe2d50e3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2a000) = 0x7fe2d50e3000 mmap(0x7fe2d50e4000, 456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe2d50e4000 close(3) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe2d50b7000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe2d50b5000 arch_prctl(ARCH_SET_FS, 0x7fe2d50b8580) = 0 set_tid_address(0x7fe2d50b8850) = 898675 set_robust_list(0x7fe2d50b8860, 24) = 0 rseq(0x7fe2d50b84a0, 0x20, 0, 0x53053053) = 0 mprotect(0x7fe2d4df2000, 16384, PROT_READ) = 0 mprotect(0x7fe2d50e3000, 4096, PROT_READ) = 0 mprotect(0x7fe2d4c0c000, 4096, PROT_READ) = 0 mprotect(0x7fe2d5061000, 69632, PROT_READ) = 0 mprotect(0x5597e4995000, 4096, PROT_READ) = 0 mprotect(0x7fe2d5141000, 8192, PROT_READ) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 munmap(0x7fe2d50e5000, 119551) = 0 futex(0x7fe2d50736bc, FUTEX_WAKE_PRIVATE, 2147483647) = 0 getrandom("\xea\xc6\xac\xee\x8e\xcf\xe8\xa4", 8, GRND_NONBLOCK) = 8 brk(NULL) = 0x5598209e4000 brk(0x559820a05000) = 0x559820a05000 newfstatat(AT_FDCWD, "/sys/bus/event_source/devices/i915", {st_mode=S_IFDIR|0755, st_size=0, ...}, 0) = 0 newfstatat(AT_FDCWD, "/sys/bus/event_source/devices/i915", {st_mode=S_IFDIR|0755, st_size=0, ...}, 0) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/type", O_RDONLY) = 3 read(3, "14\n", 8191) = 3 close(3) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events", O_RDONLY|O_CLOEXEC|O_DIRECTORY) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 fcntl(3, F_GETFL) = 0x18000 (flags O_RDONLY|O_LARGEFILE|O_DIRECTORY) fcntl(3, F_SETFD, FD_CLOEXEC) = 0 getdents64(3, 0x5598209f6990 /* 41 entries */, 32768) = 1512 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events/rcs0-busy", O_RDONLY) = 4 read(4, "config=0x0\n", 8191) = 11 close(4) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events/vecs0-busy", O_RDONLY) = 4 read(4, "config=0x3000\n", 8191) = 14 close(4) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events/vcs1-busy", O_RDONLY) = 4 read(4, "config=0x2010\n", 8191) = 14 close(4) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events/vcs0-busy", O_RDONLY) = 4 read(4, "config=0x2000\n", 8191) = 14 close(4) = 0 openat(AT_FDCWD, "/sys/bus/event_source/devices/i915/events/bcs0-busy", O_RDONLY) = 4 read(4, "config=0x1000\n", 8191) = 14 close(4) = 0 getdents64(3, 0x5598209f6990 /* 0 entries */, 32768) = 0 close(3) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, -1, PERF_FLAG_FD_CLOEXEC) = 3 ioctl(3, PERF_EVENT_IOC_ID, [187]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x3000, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 4 ioctl(4, PERF_EVENT_IOC_ID, [188]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x2010, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 5 ioctl(5, PERF_EVENT_IOC_ID, [189]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x2000, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 6 ioctl(6, PERF_EVENT_IOC_ID, [190]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x1000, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 7 ioctl(7, PERF_EVENT_IOC_ID, [191]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x100000, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 8 ioctl(8, PERF_EVENT_IOC_ID, [192]) = 0 perf_event_open({type=0xe /* PERF_TYPE_??? */, size=0x88 /* PERF_ATTR_SIZE_??? */, config=0x100002, sample_period=0, sample_type=0, read_format=PERF_FORMAT_TOTAL_TIME_ENABLED|PERF_FORMAT_ID|PERF_FORMAT_GROUP, precise_ip=0 /* arbitrary skid */, ...}, -1, 0, 3, PERF_FLAG_FD_CLOEXEC) = 9 ioctl(9, PERF_EVENT_IOC_ID, [193]) = 0 read(3, "\7\0\0\0\0\0\0\0\257\274\35\0\0\0\0\0\0\0\0\0\0\0\0\0\273\0\0\0\0\0\0\0"..., 128) = 128 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x2), ...}) = 0 write(1, "1948847|Frequency|0|Interrupts|0"..., 671948847|Frequency|0|Interrupts|0|Render|0|Copy|0|Video|0|Enhance|0 ) = 67 clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7ffe268fa680) = 0 read(3, "\7\0\0\0\0\0\0\0\25>\277;\0\0\0\0\0\0\0\0\0\0\0\0\273\0\0\0\0\0\0\0"..., 128) = 128 write(1, "1002389013|Frequency|130|Interru"..., 741002389013|Frequency|130|Interrupts|336|Render|0|Copy|0|Video|0|Enhance|0 ) = 74
Thank you. Looks correct to me, not sure why we only read 0
One more thing I just noticed - it looks like my GPU applet stops showing actual values once I change the display configuration - like, physically unplug an external monitor. I'm not sure if it's the same problem the original poster has (the uptime when I reproduced the issue now was just about 2 hours) but that is at least one case. Once I reboot, the applet shows the GPU load again normally.
After upgrading to Fedora 43 (still with the same Plasma version - 6.4.5, that is - as just prior to the upgrade) - I see the GPU graph still alive for hours, surviving display config changes and all. So I think it is something lower on the stack, below KDE code that is; and therefore - NOTABUG?
I don't have a xe gpu maybe the xe driver does thigns differently to i915. I need to do some research.
In my case it's still i915 driver, actually (even though the GPU is Iris Xe).
I assume intel_gpu_top works? Then I can look what it does different
Hold on - what I meant to say is that after upgrading to Fedora 43 the GPU graph is alive and kicking and the issue doesn't manifest any more.
So we can close it, seems something magically fixed it in the lower stack?
Yes, that's what I tried to say in https://bugs.kde.org/show_bug.cgi?id=506993#c9 :)
Unfortunately, it was a temporary blip - after ~30 hours straight running well, the graph went mute again, and after further restarts it never survived for more than a few hours.
Other sesnsors do not stop working I guess. When it stops working is `ksystemstats_intel_helper` still runing?
They don't, only GPU % (even GPU frequency keeps working); and yes it does.
Hm, wait - actually I just realised that something is off: ksystemstats_intel_helper, as well as intel_gpu_top, show frequency and interrupts but when it comes to individual engines (Render/Video/etc.) the summary figures are 0. That said, intel_gpu_top still shows non-0 consumption of the engines by each process. That's likely the reason the GPU consumption is not shown in Plasma.
Created attachment 186452 [details] intel_gpu_top only showing per-process use but not total numbers Here's to illustrate what I wrote above.
If intel_gpu_top is also affected it's likely it's not a bug in ksystemstats but something more fundamental
Yes - a random search on Internet actually brought me this: https://github.com/blakeblackshear/frigate/discussions/16120 - after a long trail of comments trying to pinpoint the issue the conclusion is in https://github.com/blakeblackshear/frigate/discussions/16120#discussioncomment-13316174
The bug is in the driver: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/175