จะหาสาเหตุของการใช้งาน CPU สูงของ gnome-shell ได้อย่างไร?


13

ฉันใช้ Linux Fedora 23 และเมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่าgnome-shellกระบวนการของฉันใช้ CPU 100% ของ CPU อย่างต่อเนื่อง (รายงานโดยhtopไม่มีแอปพลิเคชันที่มองเห็นได้ทำงานอยู่) มีคำแนะนำบางอย่างซึ่งครอบคลุมการแก้ไขปัญหาข้อบกพร่องบางอย่างในgnome-shellโลโก้ (ปิดการใช้งานโลโก้พื้นหลังจัดตำแหน่งจอภาพใหม่) แต่ไม่มีใครช่วย

ฉันพยายามวิ่ง

perf top

ซึ่งรายงานการทำงานมากที่สุดในสัญลักษณ์ต่อไปนี้:

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

จากนั้นฉันก็ลองมองgnome-shellกระบวนการอย่างใกล้ชิดด้วย

perf record -g -p PID
perf report -g

แต่ผลลัพธ์ดูเหมือนจะไร้ประโยชน์:

  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

คุณมีคำใบ้ให้ฉันทำอย่างไรเพื่อตรวจสอบสิ่งที่เกิดขึ้นในระบบของฉัน

ฉันใช้ Skylake i5 6260u กับ Intel Iris 540 กับ Fedora ที่ใช้เคอร์เนล 4.3.3-300.fc23.x86_64


ฉันมีปัญหาเดียวกันกับ Arch Linux, เคอร์เนล 4.5.1 กับ i7-2600
Florian Bw

คุณลองตั้งค่าไม่มีภาพบนพื้นหลังเดสก์ท็อปแล้วหรือยัง
frans

ฉันมีปัญหาเดียวกันบน Ubuntu 17.10 กับ Lenovo G50 ผิดหวังที่ไม่มีใครตอบคำถามนี้
TheGeeko61

คำตอบ:


6

อาจลองใช้ auditd ซึ่งโดยประมาณจะเป็นดังนี้:

$ 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

สิ่งนี้จะติดตั้งและเริ่มต้น auditd ตั้งค่านโยบายเพื่อเก็บข้อมูลการโทรของระบบสำหรับ PID ของคุณ (ในตัวอย่าง 1234) รอสักครู่เพื่อเก็บข้อมูลในปริมาณที่เหมาะสมจากนั้นลบนโยบายการตรวจสอบออก ลองดู auditd.log สำหรับ PID ของ gnome-terminal ของคุณดูดีกว่าว่าคุณกำลังทำอะไรอยู่

อีกหนึ่งเครื่องมือที่รวดเร็วสำหรับการตรวจสอบว่ากระบวนการใช้เวลาทำอะไรบ้างเพียงแค่รอสักครู่แล้วกด 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

จากนั้นหากคุณต้องการเรียนรู้เพิ่มเติมให้ตรวจสอบหน้าคู่มือที่เหมาะสมสำหรับการโทรของระบบที่คุณกำลังดู:

$ man -s2 clone

โชคดี!


1
perf เหมาะอย่างยิ่งสำหรับการตรวจสอบสิ่งที่เคอร์เนลไม่ว่างทำ แต่เมื่อคุณสงสัยว่าปัญหาการใช้งาน CPU นี้เกิดจากผู้ใช้คุณจะมองหาการโทรของระบบได้ดีที่สุด ฉันเพิ่งใช้วิธีการ auditd (ด้วย '-S execve' และไม่มี '-F ... ' เพื่อ จำกัด นโยบายเพียงแค่ดูการเรียกระบบ 'execve' ทั้งหมด) เพื่อติดตามกระบวนการ / daemon ที่เรียก 'zpool get' ทุกคน สิบวินาที เรียนรู้อย่างรวดเร็วว่ามันเป็นนักเทียบท่า!
trcm

0

apt install inxi inxi -t cm

กระบวนการ: CPU -% ที่ใช้ - 5 อันดับแรกที่ใช้งานอยู่
           1: cpu: 100% คำสั่ง: gnome-shell pid: 1980
           2: cpu: 1.1% คำสั่ง: java pid: 1425
           3: cpu: 0.1% คำสั่ง: java pid: 2949
           4: cpu: 0.0% คำสั่ง: bash pid: 32516
           5: cpu: 0.0% คำสั่ง: su pid: 32515
           หน่วยความจำ - ใช้ MB /% - ใช้งานได้ 5 อันดับแรก
           1: mem: 5613.34MB คำสั่ง (35.2%): gnome-shell pid: 1980
           2: mem: 3256.19MB คำสั่ง (20.4%): gnome-settings-daemon pid: 1647
           3: mem: 2305.28MB คำสั่ง (14.4%): java pid: 1425
           4: mem: 1048.82MB คำสั่ง (6.5%): java pid: 2949
           5: mem: 225.59MB (1.4%) คำสั่ง: java pid: 2619

1
สิ่งนี้แสดงให้เห็นได้อย่างไรว่าอะไรใน gnome-shell ที่เป็นสาเหตุของ CPU peak
ลูกปา

-1

สำหรับทุกคนที่พบปัญหาที่คล้ายกัน ตรวจสอบว่าคุณกำลังใช้ Xorg หรือ Wayland หากทางเปลี่ยนเป็น xorg และทุกอย่างก็โอเค


หนึ่งควรตรวจสอบสิ่งนี้
user907860

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.