Wie finde ich die Ursache für die hohe CPU-Auslastung von Gnome-Shell?


11

Ich bin auf einem Linux Fedora 23 und habe kürzlich gemerkt, dass mein gnome-shell Prozess verwendet ständig 100% einer CPU (gemeldet von htop, keine sichtbaren Anwendungen laufen). Es gibt einige Hinweise, die einige Problemumgehungen für Bugs im Internet behandeln gnome-shell (Hintergrund-Logo deaktivieren, Monitore neu ausrichten), aber keine davon hilft.

Ich habe versucht zu rennen

perf top

die die meiste Arbeit in den folgenden Symbolen meldet:

22.55%  [kernel]                            [k] acpi_ns_search_one_scope
11.41%  [kernel]                            [k] acpi_ex_system_memory_space_h
 5.27%  [kernel]                            [k] _raw_spin_lock_irqsave
 5.23%  [kernel]                            [k] _raw_write_unlock_irqrestore
 3.52%  [kernel]                            [k] acpi_ut_update_object_referen
 ...

Dann habe ich versucht, genauer hinzuschauen gnome-shell verarbeiten mit

perf record -g -p PID
perf report -g

aber die Ausgabe scheint nutzlos zu sein:

  Children      Self  Command      Shared Object                 Symbol       
-   29.08%     0.00%  gnome-shell  [unknown]                     [.] 000000000
   - 0                                                                        
      + 55.88% 0                                                              
      + 8.25% 0x85a81                                                         
      + 6.87% 0x2                                                             
      + 5.94% 0x4                                                             
      + 4.60% 0x889fc                                                         
        3.32% 0x656c6261                                                      
      + 2.39% 0x8feab                                                         
        2.23% 0x88467                                                         
      + 1.26% 0x190800002800                                                  
      + 1.24% 0xffad7fa800100008                                              
        1.23% 0xc82ca96051913c58                                              
        1.20% 0x5602c82afa00                                                  
      + 1.18% 0x1                                                             
        1.16% 0x89e84                                                         
        1.10% 0x5602c7c68830                                                  
        1.08% 0x5602c900736e                                                  
      + 1.08% 0x7ffe4bfd1001                                                  
-   21.48%     0.00%  gnome-shell  [kernel.kallsyms]             [k] entry_SYS
   - entry_SYSCALL_64_fastpath                                                
      + 43.62% __GI___ioctl                                                   
      + 18.92% 0xf6fdd                                                        
      + 12.90% __GI___libc_open                                               
      + 5.21% 0xfb4d                                                          
      + 3.92% __GI___libc_recvmsg                                             
      + 2.89% _IO_file_read                                                   
      + 2.75% __socket                                                        
      + 2.74% __GI___libc_read                                                
      + 1.41% __GI___mmap64                                                   
      + 1.39% __GI___libc_recvmsg                                             
        1.30% 0x103b73                                                        
      + 0.77% __GI___writev                                                   
        0.74% __statfs                                                        
      + 0.74% _IO_file_open                                                   
        0.71% __GI___munmap                                                   
+    9.37%     0.00%  gnome-shell  libc-2.22.so                  [.] __GI___io
+    9.37%     0.00%  gnome-shell  [kernel.kallsyms]             [k] sys_ioctl

Haben Sie einen Hinweis für mich, was ich tun könnte, um zu überprüfen, was auf meinem System vor sich geht?

Ich arbeite auf einem Skylake i5 6260u mit Intel Iris 540 und Fedora mit Kernel 4.3.3-300.fc23.x86_64


Ich habe das gleiche Problem unter Arch Linux, Kernel 4.5.1, mit einem i7-2600
Florian Bw

Haben Sie versucht, kein Bild auf dem Desktop-Hintergrund einzustellen?
frans

Ich habe das gleiche Problem auf Ubuntu 17.10 mit einem Lenovo G50. Enttäuscht, dass niemand diese Frage angesprochen hat.
TheGeeko61

Antworten:


4

Vielleicht versuchen Sie es mit auditd, was ungefähr so ​​aussieht:

$ sudo yum install auditd
$ sudo auditctl -a exit,always -S all -F pid=1234 & sleep 15
$ sudo auditctl -d exit,always -S all -F pid=1234
$ less /var/log/audit/audit.log

Dadurch wird auditd installiert und gestartet, eine Richtlinie zum Erfassen von Systemaufrufinformationen für Ihre PID festgelegt (1234 im Beispiel), eine kurze Wartezeit zum Erfassen einer anständigen Menge von Informationen abgewartet und dann die Überwachungsrichtlinie entfernt. Sehen Sie sich das auditd.log für Ihre Gnome-Terminal-PID genauer an, um eine bessere Vorstellung davon zu bekommen, was gerade zu tun ist.

Ein weiteres Tool, mit dem Sie schnell erkennen können, wofür ein Prozess Zeit benötigt, ist, einfach kurz zu warten und dann STRG-C zu drücken:

$ sudo strace -c -p 1234
strace: Process 1234 attached
^Cstrace: Process 1234 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 56.98    0.003496         388         9           clone
 17.19    0.001055           8       135           rt_sigprocmask
  6.19    0.000380          21        18         9 wait4
  4.58    0.000281          16        18           close
  3.80    0.000233          26         9           read
  3.47    0.000213          24         9           stat
  3.37    0.000207          23         9         9 rt_sigsuspend
  3.08    0.000189          21         9           pipe
  1.34    0.000082           9         9         9 rt_sigreturn
------ ----------- ----------- --------- --------- ----------------
100.00    0.006136                   225        27 total

Wenn Sie mehr erfahren möchten, überprüfen Sie die entsprechende Manpage für den Systemaufruf, den Sie sich ansehen:

$ man -s2 clone

Viel Glück!


1
perf eignet sich hervorragend, um zu untersuchen, was der Kernel gerade tut. Da Sie jedoch den Verdacht haben, dass dieses Problem mit der CPU-Auslastung im Benutzerland verursacht wurde, sollten Sie sich die Systemaufrufe ansehen. Ich habe kürzlich die auditd-Methode (mit '-S execve' und ohne '-F ...') verwendet, um die Richtlinie so einzuschränken, dass nur alle Systemaufrufe 'execve' überwacht werden zehn Sekunden. Sehr schnell gelernt, es war Hafenarbeiter!
trcm

0

apt install inxi inxi -t cm

Processes: CPU - % used - top  5 active
           1: cpu: 100% command: gnome-shell pid: 1980
           2: cpu: 1.1% command: java pid: 1425
           3: cpu: 0.1% command: java pid: 2949
           4: cpu: 0.0% command: bash pid: 32516
           5: cpu: 0.0% command: su pid: 32515
           Memory - MB / % used - top  5 active
           1: mem: 5613.34MB (35.2%) command: gnome-shell pid: 1980
           2: mem: 3256.19MB (20.4%) command: gnome-settings-daemon pid: 1647
           3: mem: 2305.28MB (14.4%) command: java pid: 1425
           4: mem: 1048.82MB (6.5%) command: java pid: 2949
           5: mem: 225.59MB (1.4%) command: java pid: 2619

1
Wie zeigt dies, was genau in der Gnome-Shell den CPU-Peak verursacht?
confetti

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.