Jak znaleźć przyczynę wysokiego zużycia procesora przez powłokę gnome?


13

gnome-shellKorzystam z Fedory 23 na Linuksie i ostatnio zauważyłem, że mój proces stale wykorzystuje 100% jednego procesora (zgłaszane przez htop, nie ma uruchomionych widocznych aplikacji). Istnieje kilka wskazówek, które obejmują pewne obejścia błędów w gnome-shell(dezaktywacji logo tła, ponownym wyrównaniu monitorów), ale żadna z nich nie pomaga.

Próbowałem biec

perf top

który zgłasza najwięcej pracy w następujących symbolach:

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
 ...

Potem spróbowałem bliżej przyjrzeć się gnome-shellprocesowi

perf record -g -p PID
perf report -g

ale dane wyjściowe wydają się bezużyteczne:

  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

Czy masz dla mnie podpowiedź, co mogę zrobić, aby sprawdzić, co dzieje się w moim systemie?

Jestem na Skylake i5 6260u z Intel Iris 540 z Fedorą z uruchomionym jądrem 4.3.3-300.fc23.x86_64


Mam ten sam problem na Arch Linux, jądro 4.5.1, z i7-2600
Florian Bw

Czy próbowałeś ustawić brak obrazu na tle pulpitu?
franki

Mam ten sam problem na Ubuntu 17.10 z Lenovo G50. Rozczarowany, że nikt nie odpowiedział na to pytanie.
TheGeeko61,

Odpowiedzi:


6

Być może spróbuj użyć audd, co z grubsza byłoby czymś w rodzaju:

$ 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

Spowoduje to zainstalowanie i rozpoczęcie audytu, ustawienie zasady przechwytywania informacji o wywołaniu systemowym dla Twojego PID (w przykładzie 1234), poczekaj chwilę, aby przechwycić przyzwoitą ilość informacji, a następnie usuń zasadę kontroli. Rzuć okiem na auditd.log dla swojego PID terminalu gnome, możesz uzyskać lepsze pojęcie o tym, co jest zajęty.

Kolejnym szybkim narzędziem do zauważania, ile czasu spędza proces, jest po prostu śledzenie, poczekaj chwilę, a następnie naciśnij CTRL-c:

$ 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

Następnie, jeśli chcesz dowiedzieć się więcej, sprawdź odpowiednią stronę podręcznika systemowego dla wywołania systemowego, na które patrzysz:

$ man -s2 clone

Powodzenia!


1
perf jest świetny do badania tego, co jądro jest zajęte, ale ponieważ podejrzewasz, że ten problem z wykorzystaniem procesora został spowodowany w przestrzeni użytkownika, najlepiej spojrzeć na wywołania systemowe. Ostatnio użyłem metody audytującej (z „-S execve” i bez „-F ...” w celu ograniczenia polityki do oglądania wszystkich wywołań systemowych „execve”) w celu śledzenia, jaki proces / demon wywoływał „zpool get” co dziesięć sekund. Bardzo szybko nauczyłem się, że to doker!
trcm

0

apt install inxi inxi -t cm

Procesy: procesor -% wykorzystany - 5 najlepszych aktywnych
           1: procesor: 100% polecenie: gnome-shell pid: 1980
           2: procesor: 1,1% polecenie: java pid: 1425
           3: procesor: 0,1% polecenie: java pid: 2949
           4: procesor: 0,0% polecenie: bash pid: 32516
           5: procesor: 0,0% polecenie: su pid: 32515
           Pamięć - wykorzystane MB /% - aktywne 5 najlepszych
           1: mem: 5613.34 MB (35,2%) polecenie: gnome-shell pid: 1980
           2: mem: 3256.19 MB (20,4%) polecenie: gnome-settings-daemon pid: 1647
           3: mem: 2305,28 MB (14,4%) polecenie: java pid: 1425
           4: mem: 1048,82 MB (6,5%) polecenie: java pid: 2949
           5: mem: 225,59 MB (1,4%) polecenie: java pid: 2619

1
Jak to pokazuje, co dokładnie w powłoce gnome powoduje szczyt procesora?
konfetti

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.