perf 结果显示了很多finish_task_switch 并且似乎与atop 结果不一致

问题描述

我正在尝试分析我的代码中的 cpu 问题。

(1) atop 命令显示我的应用程序通常使用类似数量的 USR 和 SYS cpu
(2) 但是,如果我查看我的性能结果,看起来内核完全占主导地位
(3) 还有,为什么finish_task_switch 主宰这么多?这说明什么?

(1) 在结果之上

    PID      TID  SYScpu   USRcpu   VGROW   RGROW   RUID      EUID      ST   EXC   THR  S   cpuNR   cpu   CMD        1/3
  70364        -   0.22s    0.34s    364K    264K   user      user      --     -    22  S       3    6%   g_Sclient_no_d
  70364    70364   0.00s    0.00s    364K    264K   user      user      --     -     1  S       3    0%   g_Sclient_no_d
  70364    70365   0.08s    0.00s    364K    264K   user      user      --     -     1  S       2    1%   g_Sclient_no_d
  70364    70366   0.01s    0.01s    364K    264K   user      user      --     -     1  S       3    0%   recvonly:ice
  70364    70367   0.00s    0.00s    364K    264K   user      user      --     -     1  S       1    0%   recvonly:pc
  70364    70368   0.00s    0.00s    364K    264K   user      user      --     -     1  S       0    0%   appsrc0:src
  70364    70369   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   gmain
  70364    70370   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   queue2:src
  70364    70371   0.00s    0.00s    364K    264K   user      user      --     -     1  S       1    0%   rtpsession-rtc
  70364    70372   0.11s    0.08s    364K    264K   user      user      --     -     1  S       3    2%   nicesrc0:src
  70364    70373   0.00s    0.00s    364K    264K   user      user      --     -     1  S       3    0%   nicesrc1:src
  70364    70374   0.05s    0.08s    364K    264K   user      user      --     -     1  S       2    1%   queue0:src
  70364    70375   0.00s    0.00s    364K    264K   user      user      --     -     1  S       3    0%   queue1:src
  70364    70376   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   dtlsenc0:src
  70364    70377   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   dtlsenc1:src
  70364    70378   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   GstSystemClock
  70364    70379   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   SCTP iterator
  70364    70380   0.00s    0.06s    364K    264K   user      user      --     -     1  S       2    1%   SCTP timer
  70364    70381   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   sctpenc0:src
  70364    70382   0.00s    0.00s    364K    264K   user      user      --     -     1  S       0    0%   sctpdec0:src_1
  70364    70383   0.00s    0.02s    364K    264K   user      user      --     -     1  S       2    0%   timer
  70364    70384   0.01s    0.06s    364K    264K   user      user      --     -     1  S       2    1%   rtpjitterbuffe
  70364    70385   0.00s    0.00s    364K    264K   user      user      --     -     1  S       2    0%   pool-g_Sclient

(2) 性能结果

+   26.39%  nicesrc0:src     [kernel.kallsyms]  [k] finish_task_switch                                                 ◆
+   12.30%  queue0:src       [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    9.01%  g_Sclient_no_de  [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    7.98%  SCTP timer       [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    5.99%  rtpjitterbuffer  [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    3.49%  recvonly:pc      g_Sclient_no_dec   [.] bn_mul_add_words                                                   ▒
+    1.75%  timer            [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    1.19%  nicesrc0:src     [kernel.kallsyms]  [k] __lock_text_start                                                  ▒
+    1.11%  recvonly:pc      g_Sclient_no_dec   [.] bn_sqr_comba8                                                      ▒
+    1.03%  queue0:src       [kernel.kallsyms]  [k] __lock_text_start                                                  ▒
+    0.75%  queue0:src       g_Sclient_no_dec   [.] g_type_check_instance_is_fundamentally_a                           ▒
+    0.67%  rtpsession-rtcp  [kernel.kallsyms]  [k] finish_task_switch                                                 ▒
+    0.52%  nicesrc0:src     [kernel.kallsyms]  [k] __softirqentry_text_start                                          ▒
     0.48%  nicesrc0:src     [kernel.kallsyms]  [k] do_int80_syscall_32       

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)