Làm thế nào để tìm ra nguyên nhân cho việc sử dụng CPU cao của gnome-shell?


12

Tôi đang dùng Linux Fedora 23 và gần đây tôi nhận thấy rằng gnome-shellquy trình của tôi liên tục sử dụng 100% một CPU (được báo cáo bởi htop, không có ứng dụng hiển thị nào đang chạy). Có một số gợi ý ngoài kia bao gồm một số cách giải quyết cho các lỗi trong gnome-shell(tắt logo nền, sắp xếp lại màn hình) nhưng không ai trong số chúng giúp được.

Tôi đã cố chạy

perf top

báo cáo công việc nhiều nhất trong các biểu tượng sau:

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

Sau đó, tôi đã cố gắng xem xét kỹ hơn gnome-shellquá trình với

perf record -g -p PID
perf report -g

nhưng đầu ra dường như vô dụng:

  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

Bạn có gợi ý cho tôi những gì tôi có thể làm để kiểm tra những gì đang diễn ra trên hệ thống của tôi không?

Tôi đang dùng Skylake i5 6260u với Intel Iris 540 với Fedora chạy kernel 4.3.3-300.fc23.x86_64


Tôi có cùng một vấn đề trên Arch Linux, kernel 4.5.1, với i7-2600
Florian Bw

Bạn đã thử thiết lập không có hình ảnh trên nền màn hình?
frans

Tôi gặp vấn đề tương tự trên Ubuntu 17.10 với Lenovo G50. Thất vọng vì không ai giải quyết được câu hỏi này.
TheGeeko61

Câu trả lời:


5

Có lẽ hãy thử sử dụng Audd, đại khái sẽ giống như:

$ 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

Điều này sẽ cài đặt và bắt đầu audd, thiết lập chính sách để nắm bắt thông tin cuộc gọi hệ thống cho PID của bạn (ví dụ 1234), đợi một lát để nắm bắt một lượng thông tin kha khá, sau đó xóa chính sách kiểm toán. Hãy xem qua audd.log cho bộ điều khiển đầu cuối gnome của bạn, bạn có thể hiểu rõ hơn về những gì nó đang bận.

Một công cụ nhanh khác để phát hiện ra một quá trình đang sử dụng thời gian của nó chỉ là bước đi, đợi một lát, sau đó nhấn 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

Sau đó, nếu bạn muốn tìm hiểu thêm, hãy kiểm tra trang man phù hợp cho cuộc gọi hệ thống mà bạn đang xem:

$ man -s2 clone

Chúc may mắn!


1
perf là ​​công cụ tuyệt vời để kiểm tra xem kernel đang bận làm gì, nhưng khi bạn nghi ngờ vấn đề sử dụng CPU này là do người dùng gây ra, tốt nhất bạn nên xem các cuộc gọi hệ thống. Gần đây tôi đã sử dụng phương thức audd (với '-S execve' và no '-F ...' để hạn chế chính sách chỉ xem tất cả các lệnh gọi hệ thống 'execve') để theo dõi tiến trình / daemon đang gọi 'zpool get' mỗi mười giây. Rất nhanh chóng biết nó là docker!
trcm

0

apt install inxi inxi -t cm

Quá trình: CPU -% được sử dụng - top 5 hoạt động
           1: cpu: lệnh 100%: gnome-shell pid: 1980
           2: lệnh cpu: 1.1%: java pid: 1425
           3: lệnh cpu: 0,1%: java pid: 2949
           4: lệnh cpu: 0,0%: bash pid: 32516
           5: lệnh cpu: 0,0%: su pid: 32515
           Bộ nhớ - MB /% được sử dụng - top 5 hoạt động
           Lệnh 1: mem: 5613,34MB (35,2%): gnome-shell pid: 1980
           Lệnh 2: mem: 3256.19MB (20,4%): gnome-settings-daemon pid: 1647
           Lệnh 3: mem: 2305.28MB (14,4%): java pid: 1425
           Lệnh 4: mem: 1048.82MB (6.5%): java pid: 2949
           Lệnh 5: mem: 225,59 MB (1,4%): java pid: 2619

1
Làm thế nào điều này cho thấy chính xác những gì trong gnome-shell đang gây ra đỉnh CPU?
confetti

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.