fra*_*ans 19 linux cpu-usage gnome-shell
我在 Linux Fedora 23 上,我最近注意到我的gnome-shell进程一直使用 100% 的一个 CPU(由 报告htop,没有可见的应用程序正在运行)。有一些提示可以解决gnome-shell(停用背景徽标,重新对齐显示器)中的错误的一些解决方法,但它们都没有帮助。
我试着跑
perf top
Run Code Online (Sandbox Code Playgroud)
它报告了以下符号中的最多工作:
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
...
Run Code Online (Sandbox Code Playgroud)
然后我试着仔细研究这个gnome-shell过程
perf record -g -p PID
perf report -g
Run Code Online (Sandbox Code Playgroud)
但输出似乎没用:
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
Run Code Online (Sandbox Code Playgroud)
你有什么提示我可以做什么来检查我的系统上发生了什么?
我在 Skylake i5 6260u 和 Intel Iris 540 上,Fedora 运行内核 4.3.3-300.fc23.x86_64
trc*_*rcm 12
也许尝试使用auditd,大致类似于:
sudo yum install auditd # sudo apt install auditd on Debian
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
Run Code Online (Sandbox Code Playgroud)
这将安装并启动auditd,设置一个策略来捕获您的PID(示例中的1234)的系统调用信息,等待片刻以捕获大量信息,然后删除审计策略。仔细查看您的 gnome-terminal PID 的 auditd.log,您可能会更好地了解它正在忙于做什么。
另一个用于发现进程正在花时间做什么的快速工具是strace,等待一小段时间,然后点击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
Run Code Online (Sandbox Code Playgroud)
然后,如果您想了解更多信息,请查看您正在查看的系统调用的相应手册页:
$ man -s2 clone
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34004 次 |
| 最近记录: |